从多个会话写入时,last_insert_id() 是否返回正确的结果?

Tus*_*ush 6 mysql primary-key auto-increment

我有一个表,其中有 4 列的组合将充当唯一键。

我想保留一个 id 列作为主键,而不是使用复合主键。该字段在 auto_increment 上。对数据库的插入是通过 C 接口完成的。当插入一行时,我想知道它被分配的 id。LAST_INSERT_ID() 可用于检索它,但会有多个会话插入到表中。在这种情况下 LAST_INSERT_ID() 会返回正确的值吗?

我已经阅读了这篇文章:MySql 的 LAST_INSERT_ID() 函数保证正确吗? 它表示插入多行时返回第一个插入行的 id。

当多个会话写入同一个表但单个会话一次只写入一行时,是否可以检索生成的 id 的正确值?隔离级别也重要吗?

Mat*_*Mat 12

以下是 MySQL 5.5文档的说明:

生成的 ID以每个连接为基础在服务器中维护。这意味着函数返回给给定客户端的值是为该客户端影响 AUTO_INCREMENT 列的最新语句生成的第一个 AUTO_INCREMENT 值。此值不会受到其他客户端的影响,即使它们生成自己的 AUTO_INCREMENT 值。此行为可确保每个客户端都可以检索自己的 ID,而无需关心其他客户端的活动,也无需锁定或事务。

除非您陷入链接到的问题中提到的其他注意事项,否则该last_insert_id()函数将返回您期望的内容,并且不会受到其他会话的影响。