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

OBJECTPROPERTY()を使用して、オブジェクトがSQLServerのチェック制約であるかどうかを確認します

    SQL Serverでは、OBJECTPROPERTY()を使用できます オブジェクトがCHECKであるかどうかを確認する関数 制約。

    この関数は、オブジェクトIDと、それをチェックするプロパティの2つのパラメータを受け入れます。

    したがって、最初の引数としてオブジェクトIDを渡すことができ、IsCheckCnst 2番目として、関数は1のいずれかを返します または0 CHECKかどうかによって異なります 制約。

    1の戻り値 であることを意味します CHECK 制約、および0の値 そうではないことを意味します。

    例1-CHECK制約のチェック

    簡単な例を次に示します。

    USE Test;
    SELECT OBJECTPROPERTY(178099675, 'IsCheckCnst') AS [IsCheckCnst];
    

    結果:

    +---------------+
    | IsCheckCnst   |
    |---------------|
    | 1             |
    +---------------+
    

    この場合、テスト データベースにはIDが指定されたオブジェクトがあり、実際にはCHECKです。 制約。

    例2–オブジェクトIDの取得

    オブジェクトの名前はわかっているがIDはわかっていない場合は、OBJECT_ID()を使用できます。 名前に基づいてIDを取得する関数。

    例:

    SELECT OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
    

    結果:

    +---------------+
    | IsCheckCnst   |
    |---------------|
    | 1             |
    +---------------+
    

    この場合、前の例と同じオブジェクトをチェックしました。

    ここでも、IDが個別に出力されます。

    SELECT 
      OBJECT_ID('chkEndDate') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('chkEndDate'), 'IsCheckCnst') AS [IsCheckCnst];
    

    結果:

    +-------------+---------------+
    | Object ID   | IsCheckCnst   |
    |-------------+---------------|
    | 178099675   | 1             |
    +-------------+---------------+
    

    例3–テーブルのチェック(つまり、チェック制約ではない)

    オブジェクトがCHECKでない場合は次のようになります 制約。

    SELECT OBJECTPROPERTY(18099105, 'IsCheckCnst') AS [IsCheckCnst];
    

    結果:

    +---------------+
    | IsCheckCnst   |
    |---------------|
    | 0             |
    +---------------+
    

    この場合、データベースはします 実際にはそのIDのオブジェクトがありますが、オブジェクトは実際にはテーブルであるため、否定的な結果が得られます。

    ここでもOBJECT_ID()を使用しています 。

    SELECT 
      OBJECT_ID('Individual') AS [Object ID],
      OBJECTPROPERTY(OBJECT_ID('Individual'), 'IsCheckCnst') AS [IsCheckCnst];
    

    結果:

    +-------------+---------------+
    | Object ID   | IsCheckCnst   |
    |-------------+---------------|
    | 18099105    | 0             |
    +-------------+---------------+
    

    例4–オブジェクトが存在しない

    SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。

    SELECT 
      OBJECTPROPERTY(OBJECT_ID('NonExistentObject'), 'IsCheckCnst') AS [NonExistentObject],
      OBJECTPROPERTY(11111111, 'IsCheckCnst') AS [11111111];
    

    結果:

    +---------------------+------------+
    | NonExistentObject   | 11111111   |
    |---------------------+------------|
    | NULL                | NULL       |
    +---------------------+------------+
    

    この場合、データベースにはその名前またはIDのオブジェクトは含まれていません。


    1. Oracle SQL、複数の列を連結してテキストを追加

    2. Java Enums、JPA、Postgres enums-どうすればそれらを連携させることができますか?

    3. WPDBクラスでのWordPressMySQLSQLクエリエラー

    4. MacにAzureDataStudioをインストールする方法