JDBC从重复插入生成密钥

时间:2013-08-07 15:43:46

标签: java mysql jdbc

如果你有一个带有ON DUPLICATE KEY子句的插入,并且有一个重复的键,有没有办法找回重复的主键?或者我是否必须自己进行手动查询?据我所知,CallableStatement类中的getGeneratedKeys()不会返回,因为新插入实际上并没有完成。

EDIT 对不起,如果它不清楚,但我想得到记录的主要密钥。

所以,如果我有下表(借口语法,只是徒手打字):

CREATE TABLE some_table(
  id int(11) unsigned NOT NULL AUTO_INCREMENT,
  value varchar(500)NOT NULL,
  count int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (id),
  UNIQUE KEY (value)
);

INSERT INTO some_table(value) ON DUPLICATE KEY UPDATE count = count + 1;

如果我要添加' test'作为值,将添加一条新记录,并且getGeneratedKeys()会返回id;

如果我尝试添加' test'再次,密钥已经存在,因此计数将被更新。我想要的是更新的那一行的主键/ id。我是否必须看到getGeneratedKeys()没有得到任何结果 - 因为没有生成的结果 - 并在事后做了另一个选择?

1 个答案:

答案 0 :(得分:0)

ON DUPLICATE KEY UPDATE count = count + 1, id = LAST_INSERT_ID(id)

注意:从MySQL 5.5开始,这不是必需的。