在 MySQL 中使用 LAST_INSERT_ID() 返回多行 INSERT 语句中的最后一个插入 ID
在 MySQL 中执行多条记录插入时,了解LAST_INSERT_ID() 函数的行为变得至关重要。与提供插入行 ID 的单行插入不同,LAST_INSERT_ID() 对于多行 INSERT 语句的行为有所不同。
例如,考虑以下查询:
INSERT INTO people (name, age) VALUES ('William', 25), ('Bart', 15), ('Mary', 12);
执行此语句后,人们可能期望 LAST_INSERT_ID() 函数返回最后插入的行的 ID (3)。然而,LAST_INSERT_ID() 的行为与此期望不同。
LAST_INSERT_ID() 返回第一个插入 ID
在多个记录 INSERT 语句的上下文中,LAST_INSERT_ID( ) 仅返回为第一个插入行生成的 ID。此行为明确记录在 MySQL 的文档中:
Important If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.
此设计决策确保可以在另一台服务器上轻松地复制相同的 INSERT 语句,而不会出现任何问题。通过使用第一个插入行的 ID,重现预期的行为变得简单。
对代码设计的影响
在设计依赖于用于多行插入的 LAST_INSERT_ID() 函数。在这种情况下,开发人员应避免依赖 LAST_INSERT_ID() 来确定插入行的具体 ID。应考虑在多行插入中跟踪或访问行 ID 的替代方法。
以上是LAST_INSERT_ID() 在 MySQL 的多行 INSERT 语句中表现如何?的详细内容。更多信息请关注PHP中文网其他相关文章!