sql >> Base de Datos >  >> RDS >> Mysql

MySql - EN INSERCIÓN DE CLAVE DUPLICADA

Con ON DUPLICATE KEY UPDATE , no puede insertar en otra tabla, ni hay una función alternativa disponible.

Dos formas personalizadas/alternativas de lograr esto:

  1. Usando un stored procedure como se describe en la respuesta aceptada a esta pregunta:MySQL ON DUPLICATE KEY insertar en una auditoría o tabla de registro

  2. Creando un trigger que registró cada INSERT para su tabla en otra tabla y consultando la tabla llena de "registros" en busca de duplicados.

Algo similar a esto debería funcionar:

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;
|

Para obtener una lista de los duplicados en la tabla, podría:

SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;