如果您有一个带有 ON DUPLICATE KEY 子句的插入,并且有一个重复键,有没有办法取回重复的主键?还是我必须自己手动查询?据我所知,CallableStatement 类中的 getGeneratedKeys() 不会返回,因为实际上并未完成新的插入。
编辑对不起,如果不清楚,但我想取回记录的主键。
因此,如果我有下表(请原谅语法,只需徒手输入):
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;
如果我要再次尝试添加“测试”,则密钥已经存在,因此计数将被更新。我想要的是更新的那一行的主键/ID。我是否必须看到我没有从 getGeneratedKeys() 得到任何结果——因为没有生成任何结果——并在事后进行另一次选择?