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

佩曼·阿卜杜拉希(Peyman Abdollahy)

我正在尝试编写一个标签系统,我希望该系统允许用户在文本输入中插入多个标签。然后我要插入每个标签,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

AbcAeffchen

据我了解,这篇文章

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

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

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

LAST_INSTERT_ID不受其他连接的影响

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章