信頼できないすべてのCHECK
のリストを返す必要がある場合 SQL Serverデータベースの制約については、以下のT-SQLコードを実行できます。
「信頼できない」とは、is_not_trusted
を持つ制約を指します フラグを1
に設定 。
例1-信頼できないチェック制約のみを返す
このクエリは、信頼できないCHECK
のみを返します 現在のデータベースの制約。
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, definition FROM sys.check_constraints WHERE is_not_trusted = 1;
結果:
+----------------+-----------------+---------------+-------------------------------+ | Table | Constraint | is_disabled | definition | |----------------+-----------------+---------------+-------------------------------| | ConstraintTest | chkPrice | 0 | ([Price]>(0)) | | ConstraintTest | chkValidEndDate | 1 | ([EndDate]>=[StartDate]) | | Occupation | chkJobTitle | 1 | ([JobTitle]<>'Digital Nomad') | +----------------+-----------------+---------------+-------------------------------+
このクエリは、制約名、適用されるテーブルの名前、および制約の定義を返します。
また、is_disabled
を返します 桁。これにより、制約が現在有効になっているか無効になっているかがわかります。制約を有効にすることはできますが、同時に信頼できないため、これを知っておくことが重要です。
sys.check_constraints
にクエリを実行します システムビュー。 WHERE
であるため、信頼できない制約のみが返されることがわかっています。 句は、is_not_trusted
を持つ行のみを指定します 列を1
に設定 。
信頼できるすべてを返却したい場合 CHECK
制約がある場合は、1
を変更するだけです。 0
へ 。
例2–信頼ステータスを返す
ここでもまたですが、今回はdefinition
を交換します is_not_trusted
の列 列:
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints WHERE is_not_trusted = 1;
結果:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
is_not_trusted
を含めるのはおそらく不要です 列ですが、少なくとも、有効な制約がまだ信頼できない可能性があるという事実を繰り返すのに役立ちます。
例3–すべてのチェック制約を返す
次のクエリはすべてを返します CHECK
現在のデータベースの制約(信頼できないデータベースだけでなく):
SELECT OBJECT_NAME(parent_object_id) AS 'Table', name AS 'Constraint', is_disabled, is_not_trusted FROM sys.check_constraints;
結果:
+----------------+-----------------+---------------+------------------+ | Table | Constraint | is_disabled | is_not_trusted | |----------------+-----------------+---------------+------------------| | ConstraintTest | chkPrice | 0 | 1 | | ConstraintTest | chkValidEndDate | 1 | 1 | | ConstraintTest | chkTeamSize | 0 | 0 | | Occupation | chkJobTitle | 1 | 1 | +----------------+-----------------+---------------+------------------+
is_not_trusted
の詳細な説明(および例)については フラグについては、SQLServerでCHECK制約を有効にするときにWITHNOCHECKについて知っておくべきことを参照してください。