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 です。 さまざまな DBMS 製品で、3 つの要素で構成されたテーブル名 (qualifier**.owner.**name) を使用できます。 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 権限が必要です。
使用例
次の例では、AdventureWorks2012 データベースの HumanResources.Department テーブルの主キーを取得します。
USE AdventureWorks2012;
GO
EXEC sp_pkeys @table_name = N'Department'
,@table_owner = N'HumanResources';