1. ホーム
  2. sql-server

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

2022-03-21 07:24:33

質問

SQL Serverでは、外部キー制約の無効化および有効化はサポートされていますか?または、唯一の選択肢は drop で、次に create 制約ですか?

解決方法は?

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

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

私は、あるデータベースから別のデータベースにデータを投入するときに、この方法が役に立つと思います。これは、制約を削除するよりもはるかに良いアプローチです。あなたが言ったように、データベース内のすべてのデータを削除し、再投入するときに便利です(例えば、テスト環境において)。

すべてのデータを削除する場合、次のようなことが考えられます。 この解決策 が参考になります。

また、すべてのトリガーを無効化すると便利な場合があります。 こちら .