有沒有辦法做到這一點?考慮到我有如下表:Mysql更改要插入複製密鑰的值
id | value
----|------
1 | A
2 | B
如果我嘗試插入,我得到Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY'
預期值(1, "C")
,考慮id
是一個獨特的主鍵。所以,我嘗試使用以下插入一個AFTER INSERT ON
觸發器內用下面的插入語句:
INSERT INTO table VALUES (NEW.id, NEW.value)
ON DUPLICATE KEY UPDATE NEW.id = NEW.id + 5000;
它消除了重複鍵錯誤,但它只是將不插入重複的一個(或多個)。
我按照瑜珈的建議做了一個程序。這就是它的樣子:
DELIMITER //
CREATE PROCEDURE set_keys(IN id INT, IN value char(1))
BEGIN
DECLARE CONTINUE HANDLER FOR 1062
SELECT concat('Duplicate keys detected: ',id,', ',value) AS msg;
INSERT INTO tests (id, value) VALUES(id + 5000, value);
END;
//
從現在開始做CALL set_keys(NEW.id, NEW.value);
正確的方法嗎?
不是簡單的使用一個自動增加的關鍵?附:考慮使用ON DUPLICATE KEY UPDATE不插入新行,只需編輯舊行,以便您1-A變爲5001-A並且1-C丟失 –
@RobertoBisello它會的,但是我從中導入數據另一個數據庫,並且不能修改除插入之外的原始數據庫。如果其他數據庫給我1-C,我應該可以插入它並保留列「value」中的兩個值。 – Newwt