假设我在MySQL中执行INSERT / ON DUPLICATE KEY UPDATE,它会更新一堆行。并且该表具有自动增量主键。
有没有简单的方法让MySQL告诉我刚更新的行的ID?
我知道我可以执行另一个SELECT查询,查找INSERT语句使用的相同约束,并且这并不难写,但是如果MySQL可以跟踪ID,可能会更有效率我
我在手册中看到了关于LAST_INSERT_ID的技巧,其中有一个插入/更新的行,但我想知道你要更新多行的情况。
答案 0 :(得分:2)
检查此链接一次
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
它说
如果表包含AUTO_INCREMENT 列和INSERT ... UPDATE插入一个 行,LAST_INSERT_ID()函数 返回AUTO_INCREMENT值。如果 该语句更新了一行, LAST_INSERT_ID()没有意义。 但是,你可以解决这个问题 使用LAST_INSERT_ID(expr)。假设 该id是AUTO_INCREMENT列。
要使LAST_INSERT_ID()
对更新有意义,请按如下方式插入行:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
答案 1 :(得分:0)
connection_id()
(当前会话),以便您可以将由另一个会话上的语句插入的行分开。