Mysql
 sql >> Database >  >> RDS >> Mysql

In MySQL posso restituire righe cancellate dopo un'eliminazione?

MySQL non ha l'equivalente dell'output o returning clausole fornite da altre banche dati. La soluzione migliore è un tavolo temporaneo:

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

Quindi la tabella che hai appena creato ha gli ID desiderati.

Nota:è importante utilizzare la tabella appena creata per l'eliminazione. In caso contrario, un altro thread/processo potrebbe modificare i dati tra il momento in cui acquisisci gli ID e il momento in cui li elimini.