sql >> Databáze >  >> RDS >> Sqlserver

Jak odstraním z více tabulek pomocí INNER JOIN na serveru SQL

V tomto příkladu můžete využít výhod "smazané" pseudo tabulky. Něco jako:

begin transaction;

   declare @deletedIds table ( id int );

   delete from t1
   output deleted.id into @deletedIds
   from table1 as t1
    inner join table2 as t2
      on t2.id = t1.id
    inner join table3 as t3
      on t3.id = t2.id;

   delete from t2
   from table2 as t2
    inner join @deletedIds as d
      on d.id = t2.id;

   delete from t3
   from table3 as t3 ...

commit transaction;

Samozřejmě můžete provést „výstup odstraněn“. na druhém smažte také, pokud jste potřebovali něco, k čemu se chcete připojit ke třetímu stolu.

Jako vedlejší poznámku můžete také provést insert.* v příkazu insert a oba vložené.* a delete.* v příkazu update.

UPRAVIT: Také jste uvažovali o přidání spouštěče do tabulky 1 pro odstranění z tabulky 2 + 3? Dostanete se do implicitní transakce a také budete mít „vloženo.“ a „smazáno“. " pseudo-tabulky k dispozici.



  1. Přehled typů SQL Join s příklady

  2. Cursor For Loop s dynamickým SQL příkazem

  3. Připojení ContentDocument k vlastnímu objektu Salesforce

  4. Jak deklarovat vstupní a výstupní parametry v uložené proceduře/funkci serveru SQL?