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

T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?

    データベース内のすべての制約を無効にする場合は、次のコードを実行するだけです。

    -- disable all constraints
    EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
    

    それらをオンに戻すには、次を実行します:(印刷はもちろんオプションであり、テーブルを一覧表示するだけです)

    -- enable all constraints
    exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"
    

    あるデータベースから別のデータベースにデータを取り込むときに便利だと思います。制約を削除するよりもはるかに優れたアプローチです。おっしゃるように、データベース内のすべてのデータを削除して再入力する場合(たとえば、テスト環境で)に便利です。

    すべてのデータを削除する場合は、この解決策が役立つ場合があります。

    また、すべてのトリガーを無効にすると便利な場合もあります。完全な解決策はここで確認できます。



    1. SQLServerの復元モードからデータベースをオンラインにする方法

    2. 挿入された正確な順序で行を返します

    3. 欠落しているアーカイブログからスタンバイデータベースを回復する方法

    4. UNIONALL最適化