Mysql
 sql >> Base de données >  >> RDS >> Mysql

Dans MySQL, puis-je renvoyer des lignes supprimées après une suppression ?

MySQL n'a pas l'équivalent de la output ou returning clauses fournies par d'autres bases de données. Votre meilleur pari est une table temporaire :

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

Ensuite, la table que vous venez de créer contient les identifiants que vous souhaitez.

Remarque :Il est important d'utiliser la table nouvellement créée pour la suppression. Sinon, un autre thread/processus pourrait modifier les données entre le moment où vous capturez les identifiants et le moment où vous les supprimez.