Z ON DUPLICATE KEY UPDATE
, nie można wstawić do innej tabeli - nie ma też dostępnej alternatywnej funkcji.
Można to osiągnąć na dwa niestandardowe/alternatywne sposoby:
-
Korzystanie z
stored procedure
jak przedstawiono w przyjętej odpowiedzi na to pytanie:MySQL ON DUPLICATE KEY wstawiamy do tabeli audytu lub dziennika -
Tworzenie
trigger
który zarejestrował każdyINSERT
dla twojej tabeli do innej tabeli i wysyłając zapytanie do tabeli pełnej "logów" w poszukiwaniu duplikatów.
Coś podobnego powinno działać:
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;
|
Aby uzyskać listę duplikatów w tabeli, możesz:
SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;