MySQL LAST_INSERT_ID()与多个记录INSERT语句一起使用

bog*_*dan 37 mysql insert lastinsertid

如果我使用一个执行单个记录插入的循环插入多个记录,则返回的最后一个插入ID是预期的最后一个.但是,如果我执行多个记录插入语句:

INSERT INTO people (name,age)
VALUES ('William',25), ('Bart',15), ('Mary',12);
Run Code Online (Sandbox Code Playgroud)

假设上面三个是表中插入的第一个记录.在insert语句之后我期望最后一个插入id返回3,但它返回1.有问题的语句的第一个插入id.

那么有人可以确认这是否是LAST_INSERT_ID()多个记录INSERT语句的上下文中的正常行为.所以我可以将我的代码基于它.

Asa*_*aph 41

是.这种行为last_insert_id()在MySQL的文档记录:

要点:
如果使用单个INSERT语句插入多行,则仅LAST_INSERT_ID()返回为第一个插入行生成的值.这样做的原因是可以轻松地重现INSERT与其他服务器相同的语句.