可以在插入查询中使用LAST_INSERT_ID()吗?在多行插入中使用LAST_INSERT_ID()
INSERT INTO mytable (col1, col2) VALUES ('val1', null), ('val2', LAST_INSERT_ID())
尝试上述LAST_INSERT_ID()返回0,只是看我是否可以组合查询。
可以在插入查询中使用LAST_INSERT_ID()吗?在多行插入中使用LAST_INSERT_ID()
INSERT INTO mytable (col1, col2) VALUES ('val1', null), ('val2', LAST_INSERT_ID())
尝试上述LAST_INSERT_ID()返回0,只是看我是否可以组合查询。
从我发现它不会工作,因为LAST_INSERT_ID没有一个值,直到整个陈述完成。
我认为这个解释得很好(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),则效果为未定义。)“