信頼できないすべての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について知っておくべきことを参照してください。