Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySql — PO WSTAWIENIU ZDUPLIKOWANEGO KLUCZA

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:

  1. Korzystanie z stored procedure jak przedstawiono w przyjętej odpowiedzi na to pytanie:MySQL ON DUPLICATE KEY wstawiamy do tabeli audytu lub dziennika

  2. Tworzenie trigger który zarejestrował każdy INSERT 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP, MySQL i strefy czasowe

  2. Dlaczego blokowanie na poziomie tabeli jest lepsze niż blokowanie na poziomie wiersza w przypadku dużych tabel?

  3. Wydajność UUID w MySQL?

  4. Jak skutecznie określić zmiany między wierszami za pomocą SQL

  5. użycie instrukcji mysql LOAD w PHP kończy się niepowodzeniem, ale wykonanie tego za pomocą wiersza poleceń działa