假设我在
MySQL中执行INSERT / ON DUPLICATE KEY UPDATE,它会更新一堆行.并且该表具有自动增量主键.
有没有简单的方法让MySQL告诉我刚刚更新的行的ID?
我知道我可以做另一个SELECT查询,查找INSERT语句使用的相同约束,并且这并不难写,但是如果MySQL可以跟踪我的ID,它似乎更有效.
我在手册中看到了关于LAST_INSERT_ID的技巧,其中有一个插入/更新的行,但我想知道你要更新多行的情况.
最佳答案 检查此链接一次
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
它说
If a table contains an AUTO_INCREMENT
column and INSERT … UPDATE inserts a
row, the LAST_INSERT_ID() function
returns the AUTO_INCREMENT value. If
the statement updates a row instead,
LAST_INSERT_ID() is not meaningful.
However, you can work around this by
using LAST_INSERT_ID(expr). Suppose
that id is the AUTO_INCREMENT column.
要使LAST_INSERT_ID()对更新有意义,请按如下方式插入行:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;