我正在尝试编写一个标签系统,我希望该系统允许用户在文本输入中插入多个标签。然后我要插入每个标签,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是连续的。
因此,您从中获得的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] 删除。
我来说两句