簡體   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