假设我们有2个数据库:a
和b
,以及表a.test1
和b.test2
。
如果我需要在表a.test1
中插入一行,并返回LAST_INSERT_ID()
以插入b.test2
,那么LAST_INSERT_ID()
会从另一个数据库返回值吗?它可靠吗?
我在手册中没有找到任何内容,但@@IDENTITY
取决于客户端会话,因此它应该可以在两个数据库之间移植。不是吗?
答案 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。