当我对具有列INSERT
的表进行单行处理时,AUTO_INCREMENT
我想使用该LAST_INSERT_ID()
函数返回AUTO_INCREMENT
为该行存储的新的'ed值。
由于许多Microsoft SQL Server的开发者和管理员毫无疑问都知道在SQL Server(等效功能SCOPE_IDENTITY
和@@IDENTITY
)一直没有没有问题。
我知道MySQL文档状态:
生成的ID在每个连接的服务器中维护。这意味着函数返回给定客户端的
AUTO_INCREMENT
值是为该客户端影响AUTO_INCREMENT
列的最新语句生成的第一个值。该值不会受到其他客户端的影响,即使它们生成AUTO_INCREMENT
自己的值也是如此。此行为可确保每个客户端都可以检索自己的ID,而不必担心其他客户端的活动,也不需要锁或事务。
甚至甚至说:
从多个客户端同时使用
LAST_INSERT_ID()
和AUTO_INCREMENT
列是完全有效的。
是否存在任何可能导致LAST_INSERT_ID()
无法返回正确值的已知风险或情况?
我在CentOS 5.5 x64和Fedora 16 x64和InnoDB引擎上使用MySQL 5.5。
last_insert_id()
来判断查询是否成功。毕竟,这是最后插入的ID,当您已经知道成功时,将保留您需要的值。