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

Jak odstranit všechny závislé řádky

Pokud nemáte povolení upravovat tabulky, můžete se podívat na EXISTS operátor.
Umožní vám odstranit řádky z tabulky pouze v případě, že dotaz uvnitř EXISTS vrátit alespoň 1 výsledek. Můžete jej použít ke kontrole závislostí.

Můžete napsat 3 dotazy:

DELETE C c
WHERE EXISTS (SELECT 1
              FROM B b
              WHERE c.b = b.b
              AND EXISTS (SELECT 1
                          FROM A a
                          WHERE a.a = b.a
                          AND ... ));
DELETE B b
WHERE EXISTS (SELECT 1
              FROM A a
              WHERE a.a = b.a
              AND ...);

DELETE A a
WHERE ...

První se postará o záznam v C který odkazuje na záznamy v B který odkazuje na záznamy v A které chcete smazat.
Poté můžete odstranit záznamy z B protože v C už nejsou žádné další závislosti .
Konečně můžete odstranit záznamy z A pomocí stejné logiky.



  1. mysql extrahujte rok z formátu data

  2. Chyba hodnoty <br typu java.lang.String nelze převést na JSONObject

  3. Pokračování transakce po chybě porušení primárního klíče

  4. Jak zlepšit výkon nedeterministické funkce sloupce v klauzuli where nebo spojení?