JDBC从重复插入生成密钥

Mr *_*orn 5 java mysql jdbc

如果你有一个带有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;
Run Code Online (Sandbox Code Playgroud)

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

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

shm*_*sel 1

ON DUPLICATE KEY UPDATE count = count + 1, id = LAST_INSERT_ID(id)
Run Code Online (Sandbox Code Playgroud)

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