sql >> Databáze >  >> RDS >> Mysql

Mohu v MySQL po smazání vrátit smazané řádky?

MySQL nemá ekvivalent output nebo returning doložky poskytované jinými databázemi. Nejlepším řešením je dočasný stůl:

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

Potom tabulka, kterou jste právě vytvořili, má požadovaná ID.

Poznámka:Pro mazání je důležité použít nově vytvořenou tabulku. V opačném případě by jiné vlákno/proces mohl změnit data mezi okamžikem zachycení ID a okamžikem, kdy je smažete.



  1. Reprezentuje čas bez data v rubínu

  2. otázka oddělovače mysql

  3. Poddotaz MySQL vrací více než jeden řádek

  4. ORA-6502 se spouštěčem protokolování Grant