【SQL Server】外部キー制約を無効化/有効化する

外部キー制約を
 ・無効化
 ・有効化
する方法を記載します!

PR

前提

例として、今回は
 ・テーブル「Production.BillOfMaterials」の
 ・外部キー制約「FK_BillOfMaterials_Product_ComponentID」
を無効化/有効化します。

PR

初期状態

初期状態は
 ・is_disabled  :0(有効)
 ・is_not_trusted:0(検証済み)
です。

初期状態の確認
初期状態の確認


※上記の意味については、下記の記事を参照してください。

PR

外部キー制約を無効化する

外部キー制約無効化の構文

ALTER TABLE テーブル名 NOCHECK CONSTRAINT 外部キー制約名;

--外部キー制約を無効化
ALTER TABLE Production.BillOfMaterials NOCHECK CONSTRAINT FK_BillOfMaterials_Product_ComponentID;


上記を実行すると、
 ・is_disabled  :1(無効)
 ・is_not_trusted:1(未検証)
になります。

外部参照キーを無効化するSQLの実行結果
外部参照キーを無効化するSQLの実行結果
外部参照キーが無効化されていることを確認
外部参照キーが無効化されていることを確認
PR

外部キー制約を有効化する

外部キー制約有効化の構文

ALTER TABLE テーブル名 WITH CHECK CHECK CONSTRAINT 外部キー制約名;

--外部キー制約を有効化
ALTER TABLE Production.BillOfMaterials WITH CHECK CHECK CONSTRAINT FK_BillOfMaterials_Product_ComponentID;

WITH CHECK」を付けることで、外部キー制約の有効化と同時に外部キー制約を使用した検証も実施されます。


詳細は公式サイトをご確認ください。
※下記の公式サイトを「WITH CHECK」で検索すると見つかります。


上記を実行すると、
 ・is_disabled  :0(有効)
 ・is_not_trusted:0(検証済み)
になります。
※外部キー制約を使用した検証に引っ掛かるデータが登録されていない場合。
※検証に引っ掛かるデータが登録されていた場合、その旨のエラーが発生します。

外部参照キーを有効化するSQLの実行結果
外部参照キーを有効化するSQLの実行結果
外部参照キーが有効化されていることを確認
外部参照キーが有効化されていることを確認

※検証に引っ掛かるデータが登録されていた場合、「is_not_trusted」は「1:未検証」となります。

タイトルとURLをコピーしました