OBJECTPROPERTY()
を使用できます SQL Serverの関数を使用して、テーブルにDEFAULT制約があるかどうかを確認します。
これを行うには、最初の引数としてテーブルのオブジェクトIDを渡し、TableHasDefaultCnst
2番目の引数として。この関数は1
を返します または0
DEFAULT制約があるかどうかによって異なります。
1
の戻り値 これは、テーブルにDEFAULT制約があり、値が0
であることを意味します。 そうではないことを意味します。
例1-基本的な使用法
簡単な例を次に示します。
USE WideWorldImportersDW; SELECT OBJECTPROPERTY(1141579105, 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
結果:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
この場合、 WideWorldImportersDW データベースには、提供されたIDを持つテーブルがあり、DEFAULT制約があります。
例2–オブジェクトIDの取得
テーブルの名前はわかっているがIDはわからない場合は、OBJECT_ID()
を使用できます。 名前に基づいてIDを取得する関数。
例:
SELECT OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
結果:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 1 | +-----------------------+
これは前の例と同じオブジェクトです。
ここでも、IDが個別に出力されます。
SELECT OBJECT_ID('Dimension.City') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Dimension.City'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
結果:
+-------------+-----------------------+ | Object ID | TableHasDefaultCnst | |-------------+-----------------------| | 1013578649 | 1 | +-------------+-----------------------+
例3–テーブルにデフォルトの制約がない場合
テーブルにDEFAULT制約がない場合は、次のようになります。
SELECT OBJECTPROPERTY(OBJECT_ID('Fact.Movement'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
結果:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | 0 | +-----------------------+
この場合、オブジェクトはテーブルであり、DEFAULT制約がないだけです。
例4–オブジェクトがテーブルではない場合
データベースにIDを持つオブジェクトが含まれているが、そのオブジェクトがテーブルではない場合は、次のようになります。
SELECT OBJECTPROPERTY( OBJECT_ID('Sequences.ReseedAllSequences'), 'TableHasDefaultCnst') AS [TableHasDefaultCnst];
結果:
+-----------------------+ | TableHasDefaultCnst | |-----------------------| | NULL | +-----------------------+
例5–オブジェクトが存在しない
SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'TableHasDefaultCnst') AS [InvalidObject], OBJECTPROPERTY(12345678, 'TableHasDefaultCnst') AS [12345678];
結果:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
この場合、データベースにはその名前またはIDのオブジェクトが含まれていないため、結果はNULLになります。
エラーが発生した場合、またはオブジェクトを表示する権限がない場合にもNULLが発生します。