2

假设我们有 2 个数据库:ab、 和 表a.test1b.test2

如果我需要在 table 中插入一行a.test1,然后返回LAST_INSERT_ID()insert into b.test2,是否会LAST_INSERT_ID()从另一个数据库返回值?它可靠吗?

我在手册中没有找到任何内容,但@@IDENTITY取决于客户端会话,因此它应该可以在两个数据库之间移植。不是吗?

4

2 回答 2

4

LAST_INSERT_ID()始终为您提供您在当前连接上执行的最后一条语句插入的行的 ID INSERT,而不管该行进入哪个表(以及哪个数据库!)。

于 2013-12-03T07:09:58.687 回答
2

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

简而言之,*LAST_INSERT_ID()* 和 *mysql_insert_id()* 都像宣传的那样工作,即:它们将检索在当前会话/连接期间插入任何表的最后一个 id。

于 2013-12-03T07:22:16.567 回答