簡體   English   中英

唯一字段的Sql更新語句

[英]Sql update statement for unique field

在 MySQL 中,我對 sql update 查詢有疑問,在更新語句之前檢查某個記錄是否存在的正確方法是什么。 考慮一個包含 3 列的表,例如 id、col1、col2。 而 col1 是唯一的,更新語句包含 col1 和 col2。

檢查這個

我們可以使用 select 語句檢查插入語句之前是否存在記錄。 如果我們在更新 col1 和 col2 時在 update 語句中遵循相同的規則。 該語句將停止,因為 col1 上的記錄已經存在,即使我們只更新 col2。

如果您更新(或插入到表中),並且新插入/更新的 col1 值已在某行上使用,則您的查詢應該會因唯一約束沖突錯誤而失敗。

讓您的應用程序正確處理此錯誤/異常,並且確實無需在更新/插入之前檢查此值是否存在。 您的應用程序的查詢越少,對每個人來說就越好......

但是,我想提請您注意以下幾點:
您的表中似乎已經有一個 ID 列。 如果它是主鍵列,那么它也絕對是唯一的。 現在考慮一下,如果您真的需要在表中有兩個唯一的鍵列。 如果您的應用程序邏輯基於 col1 列中的唯一值,您實際上可以刪除 ID 列並將 col1 改為主鍵 :)

在檢查 col1 是否唯一的查詢中,如果在更新,則添加規則以排除當前更新的項目:

WHERE col1 = 'VALUE' AND id <> X

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM