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

En MySQL, ¿puedo devolver filas eliminadas después de una eliminación?

MySQL no tiene el equivalente de la output o returning cláusulas proporcionadas por otras bases de datos. Tu mejor apuesta es una mesa temporal:

CREATE TABLE TheDeletedIds as
    SELECT t1.id
    FROM t1 LEFT JOIN
         t2 
         ON t1.t2_id = t2.id
    WHERE t2.id IS NULL OR t2.is_valid = false;

DELETE t1
    FROM t1
    WHERE t1.id IN (SELECT id FROM TheDeletedIds);

Luego, la tabla que acaba de crear tiene los identificadores que desea.

Nota:Es importante utilizar la tabla recién creada para la eliminación. De lo contrario, otro subproceso/proceso podría cambiar los datos entre el momento en que captura las identificaciones y el momento en que las elimina.