Mysql
為具有 UNIQUE 的列解析 DUPLICATE
我有幾個專欄
UNIQUE INDEX
。在某些查詢中,應接受重複項,其中應將後綴添加到值中。例如,如果test title
退出,我們將其更改為test title-2
.有沒有辦法在 上創造獨特的價值
DUPLICATE
?INSERT INTO table1 (title, abr, name) VALUES ('title', 'abr', 'name')
在這個典型範例中,所有三列都是
UNIQUE
。當INSERT
失敗時,不知道是哪個col導致錯誤改變了它對應的值。如何在重複錯誤時進行查詢以更改
value
為?value-identifier
我同意@BillThor 的觀點,即您想要做的可能會產生一些問題,但您需要的是 ON DUPLICATE KEY UPDATE 語句,因此您的查詢將是這樣的:
INSERT INTO table1 (`title`, `abr`, `name`) VALUES ('title', 'abr', 'name') ON DUPLICATE KEY UPDATE `title` = CONCAT(`title`, '-2');
您可以將 CONCAT 更改為任何其他函式或您自己的儲存過程。
我會先看看你的模型。在非唯一列上放置唯一鍵約束會使您陷入此類問題。當你得到一個合法的值時會發生什麼,
test title-2
但你已經使用該值來解決test title
.如果我必須解決您的問題,我將為表單的每個唯一鍵建構一個查詢:
SELECT title FROM table1 WHERE title STARTS WITH ?
需要解析結果以查看後綴應該是什麼。可以在儲存過程中執行此操作。但是,我強烈認為需要修復數據模型,而不是程式碼。