sql >> Databasteknik >  >> RDS >> Mysql

I MySQL kan jag returnera raderade rader efter en radering?

MySQL har inte motsvarigheten till output eller returning klausuler som tillhandahålls av andra databaser. Din bästa insats är ett tillfälligt 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);

Sedan har tabellen du just skapat de ID du vill ha.

Obs:Det är viktigt att använda den nyskapade tabellen för raderingen. Annars kan en annan tråd/process ändra data mellan det att du fångar in ID:n och det att du tar bort dem.



  1. Vad ska man göra med nollvärden vid modellering och normalisering?

  2. Jämför exekveringsplaner i SQL Server

  3. oracle - konvertera många datumformat till ett enda formaterat datum

  4. Databasdelning vs partitionering