sql >> データベース >  >> RDS >> Sqlserver

SQL Serverで無効になっているすべてのCHECK制約を返す方法(T-SQLの例)

    すべてのCHECKのリストを返す必要がある場合 SQL Serverデータベースで無効にされている制約については、以下のT-SQLコードを実行できます。

    例1-無効なチェック制約のみを返す

    このクエリは、無効になっているCHECKのみを返します 現在のデータベースの制約。制約名、適用されるテーブルの名前、および制約の定義を返します。

    SELECT 
      OBJECT_NAME(parent_object_id) AS 'Table',
      name AS 'Constraint',
      definition
    FROM sys.check_constraints
    WHERE is_disabled = 1;
    

    結果:

    +----------------+-----------------+-------------------------------+
    | Table          | Constraint      | definition                    |
    |----------------+-----------------+-------------------------------|
    | ConstraintTest | chkValidEndDate | ([EndDate]>=[StartDate])      |
    | Occupation     | chkJobTitle     | ([JobTitle]<>'Digital Nomad') |
    +----------------+-----------------+-------------------------------+
    

    これは、sys.check_constraintsにクエリを実行します システムビュー。 WHEREであるため、無効な制約のみが返されることがわかっています。 句は、is_disabledを持つ行のみを指定します 列を1に設定 。

    すべての有効を返したい場合 CHECK 制約がある場合は、1を変更するだけです。 0へ 。

    例2–すべてのチェック制約を返す

    次のクエリはすべてを返します CHECK 現在のデータベースの制約(無効になっているデータベースだけではありません)。今回はis_disabledを返します 前のクエリがその値をどこから取得したかを示すための列:

    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             | 0                |
    | ConstraintTest | chkValidEndDate | 1             | 1                |
    | ConstraintTest | chkTeamSize     | 0             | 0                |
    | Occupation     | chkJobTitle     | 1             | 1                |
    +----------------+-----------------+---------------+------------------+
    

    is_not_trustedも含めました このクエリの列。制約は、再度有効にした後でも信頼できないままになる可能性があるため、この値に注意することをお勧めします。このフラグの詳細な説明(および例)については、SQLServerでCHECK制約を有効にするときにWITHNOCHECKについて知っておくべきことを参照してください。


    1. デジタルトランスフォーメーション:すべてはデータ思考から始まります

    2. 10進数のNLS_NUMERIC_CHARACTERS設定

    3. ワイルドカードを使用してXXXで始まるすべての列を選択しますか?

    4. DATEFROMPARTS()SQL Server(T-SQL)の例