是否可以从不同的数据库中获取 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 个数据库:ab,以及表 a.test1b.test2

如果我需要在表a.test1 中插入一行,并返回LAST_INSERT_ID() 以插入b.test2LAST_INSERT_ID() 是否会从另一个数据库返回值?靠谱吗?

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

【问题讨论】:

【参考方案1】:

【讨论】:

那么,它取决于连接,而不是数据库?谢谢,我会接受你的回答,当我可以的时候。【参考方案2】:

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

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

【讨论】:

以上是关于是否可以从不同的数据库中获取 LAST_INSERT_ID() ?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

如何从数据表中获取不同的值?

从 SDK 获取 Paypal API 凭证

Amazon API 从产品中获取所有图像

是否可以使用 GraphQLList 从多个表中获取数据

是否可以从资产文件中获取上次修改日期?