【问题标题】:Is it possible to get LAST_INSERT_ID() from different database?是否可以从不同的数据库中获取 LAST_INSERT_ID() ?
【发布时间】:2013-12-03 07:04:11
【问题描述】:

假设我们有 2 个数据库:ab,以及表 a.test1b.test2

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

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

【问题讨论】:

    标签: mysql sql stored-procedures last-insert-id


    【解决方案1】:

    【讨论】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-20
      • 2018-05-09
      • 2018-11-05
      • 2022-06-15
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 2012-05-08
      相关资源
      最近更新 更多