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

Kan jeg i MySQL returnere slettede rækker efter en sletning?

MySQL har ikke det, der svarer til output eller returning klausuler leveret af andre databaser. Dit bedste bud er et midlertidigt bord:

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

Så har den tabel, du lige har oprettet, de id'er, du ønsker.

Bemærk:Det er vigtigt at bruge den nyoprettede tabel til sletningen. Ellers kan en anden tråd/proces ændre dataene mellem det tidspunkt, hvor du fanger id'erne, og det tidspunkt, du sletter dem.



  1. PostgreSQL-procesnavne på Solaris

  2. Bedømmelse af din Database Performance Monitoring Setup

  3. Find de maksimale på hinanden følgende år for hvert ID'er i en tabel (Oracle SQL)

  4. flake8 klager over boolesk sammenligning ==i filterklausul