我想知道基於java中sql的唯一索引來捕獲異常是否是個好主意。在java中用作異常處理方法的mysql唯一索引
我想抓住一個異常,如'重複條目爲1-0'如果是的話處理異常,否則在數據庫表中正確插入?
我想知道基於java中sql的唯一索引來捕獲異常是否是個好主意。在java中用作異常處理方法的mysql唯一索引
我想抓住一個異常,如'重複條目爲1-0'如果是的話處理異常,否則在數據庫表中正確插入?
我說你不這樣做,有兩個原因:
我覺得很簡單事務:
性能問題:
我說要測量兩次,切割一次。剖析特定用例的用法。我想說的是,除了沉重的數據庫使用情況之外,性能不會成爲問題。
的原因是,一旦你在那個特定行執行SELECT
,其數據將被放在數據庫高速緩存和用於在爲INSERT
語句對索引進行插入檢查立即。同時請記住,這種訪問是由索引支持導致的結論是,性能不會成爲問題。
但是,一如既往,做措施。
我不明白爲什麼不。這可能比插入之前運行查詢更有效。不過,抓住異常的錯誤代碼而不是識別錯誤信息可能會更好。
另外,如果您碰巧使用Spring,那麼JDBC xception翻譯器會將SQLException轉換爲DataIntegrityViolationException。這可能更好,而不是原始的例外。 – skaffman 2009-06-22 07:33:00
您可以使用REPLACE命令。它根據記錄的存在插入/更新。而它的原子也是查詢然後插入/更新不是。這取決於如果您檢測到違規行爲,您想要做什麼?
因此,您正試圖在唯一列上發出插入操作,而不檢查值是否已經存在,以及何時出現異常,您將知道存在重複項。這是正確的嗎 ? – Babar 2009-06-22 07:19:05
是的。我想檢查的不僅僅是 – 2009-06-22 08:06:49