Q
陷阱主鍵錯誤
1
A
回答
-1
而不是將其作爲例外處理,如果您希望發生這種情況,您應該在插入特定ID之前檢查它是否存在。
1
通常,這不被視爲好的設計。您應該在插入之前檢查重複密鑰,並僅依靠DB約束作爲「安全網」。
但是,如果您覺得要這樣做,您需要捕獲異常SQLException。然後,您需要使用SQLException的屬性(特別是ErrorCode和Number)來檢查它是否是PK違例。
但是,通常檢查SQLException的確切原因是棘手的,取決於所使用的DBMS,因此它不是一個好的和可靠的方法。這是爲什麼不推薦的原因之一(見上文)。
相關問題
- 1. 陷阱ORA錯誤
- 2. 陷阱退格鍵
- 3. 陷阱錯誤在httpwebresponse
- 4. 擺好陷阱錯誤CMD
- 5. SFTP中的錯誤陷阱
- 6. NSComboBox - 陷阱返回鍵
- 7. 陷阱
- 8. 陷阱MSAccess鏈接表錯誤
- 9. 的Compojure:陷阱500 URL解碼錯誤
- 10. 正確的錯誤陷阱R
- 11. 錯誤陷阱字符串和整數
- 12. 擊陷阱沒有被執行,錯誤
- 13. 陷阱語法錯誤編譯
- 14. 已知的Xcode錯誤/陷阱列表
- 15. GCC中的簡單錯誤陷阱
- 16. 佈局陷阱或GHCi錯誤?
- 17. 軟件陷阱vs硬件陷阱
- 18. 從MS Access的空陷阱的陷阱
- 19. 解析陷阱
- 20. FileSystemWatcher的陷阱
- 21. ReSharper的陷阱
- 22. 春季陷阱
- 23. PyThreadState_SetAsyncExc陷阱?
- 24. 擊:陷阱
- 25. Java JIT陷阱
- 26. 形式 - 陷阱
- 27. SetTimer()陷阱
- 28. 如何在C#中鍵入陷阱?
- 29. 引導模式,陷阱標籤鍵
- 30. 單選按鈕鍵盤陷阱
-1這比捕獲異常更糟糕,因爲它會導致競爭條件(如果其他客戶端在您檢查的時間和您使用它的時間之間使用了該ID)。 – sleske 2012-08-07 16:01:00
這取決於它是如何完成的 - 如果它是以事務方式在存儲過程中處理的,那麼這應該沒問題。 – Paddy 2012-08-08 08:01:50
是的,這可以使工作,但它是相當不平凡,可能會顯着降低性能(整個表必須鎖定),所以爲什麼要麻煩?無論如何,隨意將所有這些添加到您的答案(然後我可能會刪除downvote)。 – sleske 2012-08-08 14:37:53