如果你有一个带有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()没有得到任何结果 - 因为没有生成的结果 - 并在事后做了另一个选择?
答案 0 :(得分:0)
ON DUPLICATE KEY UPDATE count = count + 1, id = LAST_INSERT_ID(id)
注意:从MySQL 5.5开始,这不是必需的。