重复密钥上的MySQL ...获取现有ID?

时间:2014-06-27 15:36:27

标签: mysql database key

我正在使用ON DUPLICATE KEY UPDATE来处理表上的重复插入,以便将它们丢弃。

在我的例子中,它是一个存储标签的简单表:

  • id(int,PK,AI,unsigned,not null)
  • tag(varchar 25,not null,unique)

这样可以正常工作,但我需要检索ID - 插入ID,成功插入时,或现有ID,如果它是重复的。

我得到插入ID = 0,其中ON DUPLICATE KEY UPDATE会触发,我猜这是预期的行为,因为没有插入。

无论如何,我可以获得现有ID,还是我会前往单独的阅读查询?

1 个答案:

答案 0 :(得分:1)

您可以添加第三列ModifiedDate并使用:

insert into t(id, tag)
    select id, tag
    on duplicate key update ModifiedDate = now();

这将确保更新确实发生,反过来,LAST_INSERT_ID()会返回一个值。