sql >> データベース >  >> RDS >> Sqlserver

すべての依存行を削除する方法

    テーブルの変更が許可されていない場合は、EXISTS を参照してください。
    EXISTS 内のクエリが存在する場合にのみ、テーブルから行を削除できます。 少なくとも 1 つの結果を返します。依存関係のチェックに使用できます。

    3 つのクエリを記述できます:

    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 ...
    

    最初のものは C でレコードを処理します B のレコードを参照する A のレコードを参照する
    その後、B からレコードを削除できます。 C には依存関係がなくなったので .
    最後に、A からレコードを削除できます。 同じロジックを使用します。



    1. MySQLテーブルのリストを取得し、すべてのテーブルのコードを実行します

    2. MySQLでの行カウントの高速化

    3. PLS-00306:呼び出しの引数の数またはタイプが間違っています

    4. INSTEADOFトリガーに関する興味深い点