[英]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 UPDATE
或INSERT IGNORE ...
,可能会导致错误的结果。 但是我还没有测试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.