5

如果您有一个带有 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() 得到任何结果——因为没有生成任何结果——并在事后进行另一次选择?

4

1 回答 1

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

Note: This shouldn't be necessary as of MySQL 5.5.

于 2014-06-08T22:05:09.407 回答