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

他のテーブルへの外部キーを含むテーブルの行を削除する方法

    まず、1回限りのデータスクラビングの演習として、孤立した行を削除します。

    DELETE 
      FROM ReferencingTable 
     WHERE NOT EXISTS (
                       SELECT * 
                         FROM MainTable AS T1
                        WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
                      );
    

    次に、1回限りのスキーマ変更の演習として、ON DELETE CASCADEを追加します。 参照テーブルの外部キーへの参照アクション。例:

    ALTER TABLE ReferencingTable DROP 
       CONSTRAINT fk__ReferencingTable__MainTable;
    
    ALTER TABLE ReferencingTable ADD 
       CONSTRAINT fk__ReferencingTable__MainTable 
          FOREIGN KEY (pk_col_1)
          REFERENCES MainTable (pk_col_1)
          ON DELETE CASCADE;
    

    その後、永遠に、参照している行が削除されると、参照しているテーブルの行が自動的に削除されます。



    1. MySQLデータベースをコピーする最も簡単な方法は?

    2. Railsのpg_attributeテーブルで遅い暗黙のクエリを修正する方法

    3. SQLServer2008の再帰的な同じテーブルクエリ

    4. MySQLの低速結合-ただし、常にではなく、すべてのテーブルで実行されるわけではありません