是否可以从不同的数据库中获取LAST_INSERT_ID()?

时间:2013-12-03 07:04:11

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

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

如果我需要在表a.test1中插入一行,并返回LAST_INSERT_ID()以插入b.test2,那么LAST_INSERT_ID()会从另一个数据库返回值吗?它可靠吗?

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

Inshort Both * LAST_INSERT_ID()*和* mysql_insert_id()*按照公布的方式工作,即:它们将检索在当前会话/连接期间插入到任何表中的最后一个id。