OBJECTPROPERTY()
を使用できます SQL Serverの関数を使用して、オブジェクトが主キーであるかどうかを確認します。
オブジェクトが主キーであるかどうかを確認するには、最初の引数としてオブジェクトIDを渡し、IsPrimaryKey
2番目の引数として。この関数は1
を返します または0
主キーかどうかによって異なります。
1
の戻り値 であることを意味します 主キー、および値0
そうではないことを意味します。
例1-基本的な使用法
簡単な例を次に示します。
USE PK_Test; SELECT OBJECTPROPERTY(901578250, 'IsPrimaryKey') AS [IsPrimaryKey];
結果:
+----------------+ | IsPrimaryKey | |----------------| | 1 | +----------------+
この場合、 PK_Test データベースには、提供されたIDを持つオブジェクトがあり、それが主キーです。
例2–オブジェクトIDの取得
オブジェクトの名前はわかっているがIDはわかっていない場合は、OBJECT_ID()
を使用できます。 名前に基づいてIDを取得する関数。
例:
SELECT OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
結果:
+----------------+ | IsPrimaryKey | |----------------| | 1 | +----------------+
この場合、前の例と同じオブジェクトをチェックしました。
ここでも、IDが個別に出力されます。
SELECT OBJECT_ID('PK_Musician') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('PK_Musician'), 'IsPrimaryKey') AS [IsPrimaryKey];
結果:
+-------------+----------------+ | Object ID | IsPrimaryKey | |-------------+----------------| | 901578250 | 1 | +-------------+----------------+
例3–オブジェクトが主キーではない場合
オブジェクトが主キーでない場合は、次のようになります。
SELECT OBJECTPROPERTY(885578193, 'IsPrimaryKey') AS [IsPrimaryKey];
結果:
+----------------+ | IsPrimaryKey | |----------------| | 0 | +----------------+
この場合、データベースはします 実際にはそのIDのオブジェクトがありますが、オブジェクトは実際にはテーブルであるため、否定的な結果が得られます。
ここでもOBJECT_ID()
を使用しています 。
SELECT OBJECT_ID('Musician') AS [Object ID], OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsPrimaryKey') AS [IsPrimaryKey], OBJECTPROPERTY(OBJECT_ID('Musician'), 'IsTable') AS [IsTable];
結果:
+-------------+----------------+-----------+ | Object ID | IsPrimaryKey | IsTable | |-------------+----------------+-----------| | 885578193 | 0 | 1 | +-------------+----------------+-----------+
また、オブジェクトがテーブルであるかどうかを確認し、結果が正であるかどうかを確認しました。
例4–オブジェクトが存在しない
SQL Serverは、オブジェクトIDが現在のデータベースコンテキストにあると想定します。別のデータベースからオブジェクトIDを渡すと、NULLの結果が得られるか、誤った結果が得られます。
SELECT OBJECTPROPERTY(OBJECT_ID('InvalidObject'), 'IsPrimaryKey') AS [InvalidObject], OBJECTPROPERTY(12345678, 'IsPrimaryKey') AS [12345678];
結果:
+-----------------+------------+ | InvalidObject | 12345678 | |-----------------+------------| | NULL | NULL | +-----------------+------------+
この場合、データベースにはその名前またはIDのオブジェクトが含まれていないため、結果はNULLになります。
エラーが発生した場合、またはオブジェクトを表示する権限がない場合にもNULLが発生します。