Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich in MySQL gelöschte Zeilen nach einer Löschung zurückgeben?

MySQL hat kein Äquivalent zu output oder returning Klauseln, die von anderen Datenbanken bereitgestellt werden. Am besten ist eine temporäre Tabelle:

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

Dann hat die gerade erstellte Tabelle die gewünschten IDs.

Hinweis:Es ist wichtig, die neu erstellte Tabelle zum Löschen zu verwenden. Andernfalls könnte ein anderer Thread/Prozess die Daten zwischen dem Zeitpunkt, an dem Sie die IDs erfassen, und dem Zeitpunkt, an dem Sie sie löschen, ändern.