sp_pkeys (Transact-SQL)
現在の環境における、単一のテーブルに関する主キーの情報を返します。
構文
sp_pkeys [ @table_name = ] 'name'
[ , [ @table_owner = ] 'owner' ]
[ , [ @table_qualifier = ] 'qualifier' ]
引数
[ @table_name = ] 'name'
情報を返すテーブルを指定します。name のデータ型は sysname で、既定値はありません。ワイルドカードによるパターン検索はサポートされていません。[ @table_owner = ] 'owner'
指定したテーブルのテーブル所有者を指定します。owner のデータ型は sysname で、既定値は NULL です。ワイルドカードによるパターン検索はサポートされていません。owner を指定しない場合は、基になる DBMS の既定のテーブル可視性規則が適用されます。SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。owner を指定せず、また指定した name のテーブルを現在のユーザーが所有していない場合は、データベース所有者が所有する、指定した name のテーブルが検索されます。テーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier = ] 'qualifier'
テーブルの修飾名を指定します。qualifier のデータ型は sysname で、既定値は NULL です。3 つの要素から構成されるテーブル名 (qualifier**.owner.**name) は、多くの DBMS 製品で使用できます。SQL Server では、この列はデータベース名を表します。製品によっては、テーブルのデータベース環境のサーバー名を表す場合があります。
戻り値
なし
結果セット
列名 |
データ型 |
説明 |
---|---|---|
TABLE_QUALIFIER |
sysname |
テーブル識別子の名前。このフィールドは NULL の場合もあります。 |
TABLE_OWNER |
sysname |
テーブル所有者の名前。このフィールドは常に値を返します。 |
TABLE_NAME |
sysname |
テーブルの名前。SQL Server では、この列は、sysobjects テーブルに記録されているテーブル名を表します。このフィールドは常に値を返します。 |
COLUMN_NAME |
sysname |
返される TABLE_NAME の各列の列名。SQL Server では、この列は、sys.columns テーブルに記録されている列名を表します。このフィールドは常に値を返します。 |
KEY_SEQ |
smallint |
複数列の主キーにおける、列のシーケンス番号。 |
PK_NAME |
sysname |
主キー識別子。データ ソースに適用されない場合は NULL が返されます。 |
説明
sp_pkeys では、PRIMARY KEY 制約で明示的に定義された列に関する情報が返されます。すべてのシステムで、明示的に名前の付けられた主キーがサポートされているわけではないため、主キーの構成はゲートウェイのインプリメンタによって決定されます。"主キー" という用語は、あるテーブルに対する論理的主キーを意味することに注意してください。論理的主キーとして示されている各キーには、それぞれに一意なインデックスが定義されていることが前提となります。sp_statistics には、この一意なインデックスも返されます。
sp_pkeys ストアド プロシージャは、ODBC の SQLPrimaryKeys に相当します。返される結果は、TABLE_QUALIFIER、TABLE_OWNER、TABLE_NAME、および KEY_SEQ の値で並べ替えられます。
権限
スキーマに対する SELECT 権限が必要です。
例
次の例では、AdventureWorks データベースの HumanResources.Department テーブルの主キーを取得します。
USE AdventureWorks;
GO
EXEC sp_pkeys @table_name = N'Department'
,@table_owner = N'HumanResources';