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