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

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

SQL Server では外部キー制約の無効化と有効化がサポートされていますか? それとも、制約を無効にしdropてから再度有効にするcreateしか選択肢がないのでしょうか?

ベストアンサー1

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

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

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

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

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

おすすめ記事