繁体   English   中英

如何在多个记录插入中获取最后插入的ID?

[英]how get last inserted id in multiple record insert?

我正在尝试编写一个标签系统,我希望该系统允许用户在文本输入中插入多个标签。 然后,我想将每个标签插入tag_table并需要其ID保留在tag_post_table

我知道在多个插入中last_insert_id返回第一个记录ID。 我可以将标记计数添加到last_insert_id以获得真实的最后一个ID并使用它们之间的每个ID吗? 这可靠吗?

我读了这篇文章,但我不太了解

http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html

据我了解, 这篇文章

在将innodb_autoinc_lock_mode设置为0(“传统”)或1(“连续”)的情况下,任何给定语句生成的自动增量值将是连续的,没有间隙,因为表级AUTO-INC锁定将一直保持到结束。该语句,一次只能执行一个这样的语句。

innodb_autoinc_lock_mode设置为0或1可确保自动增加的ID是连续的。

因此,您从LAST_INSERT_ID获得的ID是新ID的第一个,而LAST_INSERT_ID +“受影响的行数”是新ID的后一个。

LAST_INSTERT_ID也不受其他连接的影响

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

但是请注意,如果您使用INSERT ... ON DUPLICATE KEY UPDATEINSERT IGNORE ... ,可能会导致错误的结果。 但是我还没有测试过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM