当我对具有列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,当您已经知道成功时,将保留您需要的值。