相关疑难解决方法(0)

MySql 的 LAST_INSERT_ID() 函数是否保证正确?

当我对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。

mysql auto-increment

39
推荐指数
2
解决办法
6万
查看次数

标签 统计

auto-increment ×1

mysql ×1