Với ON DUPLICATE KEY UPDATE
, bạn không thể chèn vào bảng khác - cũng như không có sẵn chức năng thay thế.
Hai cách tùy chỉnh / thay thế mà bạn có thể thực hiện điều này:
-
Sử dụng
stored procedure
như được nêu trong câu trả lời được chấp nhận cho câu hỏi này: MySQL ON DUPLICATE KEY chèn vào bảng kiểm tra hoặc nhật ký -
Tạo
trigger
đã ghi lại mọiINSERT
cho bảng của bạn vào một bảng khác và truy vấn bảng đầy "nhật ký" để tìm bất kỳ bản sao nào.
Một cái gì đó tương tự như thế này sẽ hoạt động:
CREATE TABLE insert_logs (
id int not null
);
delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
FOR EACH ROW BEGIN
INSERT INTO insert_logs SET id = NEW.id;
END;
|
Để có danh sách các bản sao trong bảng, bạn có thể cho chúng tôi:
SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;