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のオブジェクトは含まれていません。