INSERT当我对具有列的表执行单行时,AUTO_INCREMENT我想使用该LAST_INSERT_ID()函数返回AUTO_INCREMENT为该行存储的新 ‘ed 值。
INSERT
AUTO_INCREMENT
LAST_INSERT_ID()
毫无疑问,许多 Microsoft SQL Server 开发人员和管理员都知道 SQL Server ( SCOPE_IDENTITYand @@IDENTITY) 中的等效功能并非没有问题。
SCOPE_IDENTITY
@@IDENTITY
我知道 MySQL 文档状态:
生成的 ID 在每个连接的基础上维护在服务器中。这意味着函数返回给给定客户端的值是为影响该客户端列的AUTO_INCREMENT最近语句生成的第一个值。此值不会受到其他客户端的影响,即使它们生成自己的值。这种行为确保每个客户端都可以检索自己的 ID,而不用担心其他客户端的活动,也不需要锁或事务。AUTO_INCREMENT``AUTO_INCREMENT
AUTO_INCREMENT``AUTO_INCREMENT
(资源)
甚至说:
从多个客户端同时使用LAST_INSERT_ID()和AUTO_INCREMENT列是完全有效的。
是否存在任何可能导致LAST_INSERT_ID()无法返回正确值的已知风险或场景?
我在 CentOS 5.5 x64 和 Fedora 16 x64 以及 InnoDB 引擎上使用 MySQL 5.5。
我想在使用时指出一些注意事项LAST_INSERT_ID:
LAST_INSERT_ID
ROLLBACK
AUTO_INCREMENT``LAST_INSERT_ID