Mysql

為具有 UNIQUE 的列解析 DUPLICATE

  • November 27, 2012

我有幾個專欄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 ?

需要解析結果以查看後綴應該是什麼。可以在儲存過程中執行此操作。但是,我強烈認為需要修復數據模型,而不是程式碼。

引用自:https://dba.stackexchange.com/questions/29227