我正在使用ON DUPLICATE KEY UPDATE
来处理表上的重复插入,以便将它们丢弃。
在我的例子中,它是一个存储标签的简单表:
这样可以正常工作,但我需要检索ID - 插入ID,成功插入时,或现有ID,如果它是重复的。
我得到插入ID = 0
,其中ON DUPLICATE KEY UPDATE
会触发,我猜这是预期的行为,因为没有插入。
无论如何,我可以获得现有ID,还是我会前往单独的阅读查询?
答案 0 :(得分:1)
您可以添加第三列ModifiedDate
并使用:
insert into t(id, tag)
select id, tag
on duplicate key update ModifiedDate = now();
这将确保更新确实发生,反过来,LAST_INSERT_ID()
会返回一个值。