是否可以从不同的数据库中获取 LAST_INSERT_ID() ?
Posted
技术标签:
【中文标题】是否可以从不同的数据库中获取 LAST_INSERT_ID() ?【英文标题】:Is it possible to get LAST_INSERT_ID() from different database? 【发布时间】:2013-12-03 07:04:11 【问题描述】:假设我们有 2 个数据库:a
和 b
,以及表 a.test1
和 b.test2
。
如果我需要在表a.test1
中插入一行,并返回LAST_INSERT_ID()
以插入b.test2
,LAST_INSERT_ID()
是否会从另一个数据库返回值?靠谱吗?
我没有在手册中找到任何内容,但@@IDENTITY
取决于客户端会话,因此它应该可以在两个数据库之间移植。不是吗?
【问题讨论】:
【参考方案1】:【讨论】:
那么,它取决于连接,而不是数据库?谢谢,我会接受你的回答,当我可以的时候。【参考方案2】:来自 Mysql 文档:生成的 ID 在服务器中基于每个连接进行维护。这意味着函数返回给给定客户端的值是为影响该客户端的 AUTO_INCREMENT 列的最新语句生成的第一个 AUTO_INCREMENT 值。此值不受其他客户端的影响,即使它们生成自己的 AUTO_INCREMENT 值。这种行为确保每个客户端都可以检索自己的 ID,而无需担心其他客户端的活动,也不需要锁或事务。
简而言之,*LAST_INSERT_ID()* 和 *mysql_insert_id()* 都像宣传的那样工作,即:它们将检索在当前会话/连接期间插入任何表的最后一个 id。
【讨论】:
以上是关于是否可以从不同的数据库中获取 LAST_INSERT_ID() ?的主要内容,如果未能解决你的问题,请参考以下文章