我想插入值,如果它存在「插入..重複更新」將更新它,但它不會更新自動增量val新插入one.I聽說插入在重複更新有一些錯誤,它總是生成新的ID,如果存在,它會刪除它,但我想得到確切的這個刪除的ID(當我使用last_inserted_id它只是返回最新的更新列的ID不是新插入一個)我想用新的插入的查詢更新id應該像下面這樣操作:insert if exists delete one one and insert new one(with auto increment)。我聽說有替換成,但速度很慢,我想用新插入的ID更新id 。插入重複更新獲取「新」生成的ID
回答
尊重,如果您嘗試使用自動增量列執行奇特的更新邏輯,您就會玩火。
如果在更新它時需要一個新的自動增量id,那麼只需刪除舊的行並插入像Gordon所說的新行。
在某些數據庫工作負載下,可能會比使用insert on duplicate key update
稍慢。但是除非你的桌子上至少有100個菜單,否則,除非你每天和每晚至少每秒執行10次這些操作,否則性能差異將變得微不足道。如果您確實有這種數據庫大小或工作負載,請向數據庫管理員諮詢。
REPLACE
= DELETE
,然後INSERT
。 IODKU從不刪除。每個要求您指定一些UNIQUE
密鑰的列,以便知道要使用的行。一個微妙點:如果有多個UNIQUE
鍵,REPLACE
可能會刪除多行,然後只插入一個。
IODKU可以通過使用... UPDATE id = LAST_INSERT_ID(id), ...
來獲得id(現有的或新的)。
好吧我會這樣做,但我想知道哪些重複的情況比刪除和插入更慢? –
'REPLACE'必須做更多的工作,所以它可能總是比較慢。我添加了一些更多的信息給答案。 –
你說LAST_INSERTED_ID我想得到這樣的東西更新ID與最後一個由「INSERT ...在重複更新」生成,但它給了我身份證本身的更新elem(舊的) –
- 1. MYSQL插入更新 - 重複密鑰更新 - 獲取錯誤
- 2. MySQL插入重複更新
- 3. SQLite插入新生成的ID
- 4. 生成新ID:獲取實際ID
- 5. 插入後獲取生成的ID
- 6. 實體框架4 - 獲取更新/插入生成的SQL
- 7. 如何獲取插入行的ID(新)
- 8. MYSQL,多重插入和重複更新
- 9. 「在重複更新插入」仍然插入重複項
- 10. 重新生成會話ID
- 11. 的MongoDB:對重複鍵更新插入
- 12. 重複的MySQL - 插入但不更新
- 13. Android的房間 - 獲取新插入的行的ID與自動生成
- 14. Scriptella - 如何獲取和重新使用自動生成的ID?
- 15. 調整插入重複密鑰更新
- 16. MySql,插入重複更新,其中
- 17. web2py插入重複密鑰更新
- 18. mysql插入和重複更新
- 19. 增量更新插入...重複密鑰
- 20. 在重複鍵上插入更新
- 21. 批量插入與重複鍵更新
- 22. 插入對重複鍵更新,如果
- 23. 插入...重複密鑰更新(PHP:PDO)
- 24. CRecordset - 在更新後獲取自動生成的ID()
- 25. 如何獲取插入行的ID和更新行?
- 26. SQL插入生成以及更新時更新
- 27. 更新/重新生成Roo中的pom.xml
- 28. 重複密鑰更新不只更新插入
- 29. 重複插入記錄更新未更新
- 30. 插入重複密鑰更新作爲替代更新
然後分兩步做。你需要一個真正的'delete',後面跟一個'insert'。這不是'重複密鑰更新'。 –
@GordonLinoff但我聽說插入和刪除比插入更慢...重複更新 –
@GordonLinoff我應該刪除,然後插入或有其他方式嗎?我只需要更新新值與新ID –