[英]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.