SQL Serverデータベースで無効にされているすべての外部キー制約のリストを返す必要がある場合は、以下のT-SQLコードを実行できます。
例1-無効な外部キー制約のみを返す
このクエリは、現在のデータベースで無効になっている外部キー制約のみを返します。この例では、制約の名前と、その無効で信頼できるステータスのみを返します。
SELECT name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1;
結果:
+------------------------+---------------+------------------+ | Constraint | is_disabled | is_not_trusted | |------------------------+---------------+------------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 1 | +------------------------+---------------+------------------+
これは、sys.foreign_keys
にクエリを実行します システムビュー。 WHERE
であるため、無効な制約のみが返されることがわかっています。 句は、is_disabled
を持つ行のみを指定します 列を1
に設定 。
有効のみを返したい場合 外部キー制約については、1
を変更するだけです。 0
へ 。
is_not_trusted
に注意してください フラグも1
に設定されます これらの無効な制約に対して。これは、制約がすべてのデータをチェックしたことをシステムが保証できないためです。制約を無効にすると、無効なデータがチェックされずにデータベースに入る可能性があるため、これは理にかなっています。
これも同じクエリですが、今回は各制約のテーブルと参照テーブルを含めます。
SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table', is_disabled, is_not_trusted FROM sys.foreign_keys WHERE is_disabled = 1;
結果:
+------------------------+------------+--------------------+---------------+------------------+ | Constraint | Table | Referenced Table | is_disabled | is_not_trusted | |------------------------+------------+--------------------+---------------+------------------| | FK_BandMember_Band | BandMember | Band | 1 | 1 | | FK_BandMember_Musician | BandMember | Musician | 1 | 1 | +------------------------+------------+--------------------+---------------+------------------+>
例2–すべての外部キー制約を返す
次のクエリはすべてを返します 現在のデータベースの外部キー制約(無効なデータベースだけでなく):
SELECT name AS 'Constraint', is_disabled, is_not_trusted FROM sys.foreign_keys;
結果:
+--------------------------------+---------------+------------------+ | Constraint | is_disabled | is_not_trusted | |--------------------------------+---------------+------------------| | FK_BandMember_Band | 1 | 1 | | FK_BandMember_Musician | 1 | 1 | | FK_MembershipPeriod_BandMember | 0 | 0 | +--------------------------------+---------------+------------------+