私は外部キーが大好きですが、私はそれらに1つの問題があります。テーブルへの外部キーを無効にする変換プログラムがあります。私がこれをやっている理由は、メインテーブルのすべてのレコードを再変換することができますが、他のテーブルはそれが巨大であるために毎回変換する必要はなく、そのままにしておきます。既存のデータをチェックして外部キーを有効にする
私は外部キーを無効にし、再度有効にするには、これらのコマンドを使用しています:
ALTER TABLE MyTableというNOCHECK CONSTRAINT MyConstraint私は再後にALTER TABLE MyTableとは、しかしCONSTRAINT MyConstraint
をチェック
「作成または再有効化に関する既存のデータをチェックする」という制約がまだ「いいえ」に設定されていることを確認します。制約を無効にしたため「いいえ」に設定されていますが、 。私はこれが制約を再有効化すると考えられ、既存のデータをチェックすると思いましたが、明らかにそうではありません。
これをALTER TABLEコマンドで変更する方法はありませんか?私は制約を落として再作成することができますが、私が持っているすべての外部キーを再作成するためのスクリプトを書くつもりはないと思います。
私はSQL Server 2008 R2を使用しています。
-- Enable the constraint
ALTER TABLE MyTable
WITH CHECK CHECK CONSTRAINT MyConstraint
GO
注:
ありがとう、あなたは命を救う人です。 –
SQL Server Management Studioの "外部キーの関係"ダイアログボックスの "sys.foreign_keys.is_not_trusted"は、 "既存のデータの作成または再有効化"に対応しています。 – leqid