在多行插入中使用LAST_INSERT_ID()

时间:2010-08-03 16:32:18

标签: mysql

是否可以在插入查询中使用LAST_INSERT_ID()?

INSERT INTO mytable (col1, col2) VALUES ('val1', null), ('val2', LAST_INSERT_ID())

尝试上面的LAST_INSERT_ID()会返回0,看看我是否可以合并查询。

2 个答案:

答案 0 :(得分:3)

从我发现它不起作用,因为LAST_INSERT_ID在整个语句完成之前没有值。

答案 1 :(得分:0)

我认为这很好地解释了它(http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id):

“当前正在执行的语句不会影响LAST_INSERT_ID()的值。假设您使用一个语句生成AUTO_INCREMENT值,然后在多行INSERT语句中引用LAST_INSERT_ID(),该语句将行插入到表中它自己的AUTO_INCREMENT列.LAST_INSERT_ID()的值将在第二个语句中保持稳定;它的第二行和后续行的值不受先前行插入的影响。(但是,如果混合对LAST_INSERT_ID()和LAST_INSERT_ID的引用( expr),效果未定义。)“