sp_pkeys (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のウェアハウス
現在の環境における、単一のテーブルに関する主キーの情報を返します。
構文
-- Syntax for SQL Server, Azure SQL Database, Azure Synapse Analytics, Parallel Data Warehouse
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 アクセス許可が必要です。
例
次の例では、HumanResources.Department
データベースの AdventureWorks2022
テーブルの主キーを取得します。
USE AdventureWorks2022;
GO
EXEC sp_pkeys @table_name = N'Department'
,@table_owner = N'HumanResources';
例: Azure Synapse Analytics、Analytics Platform System (PDW)
次の例では、DimAccount
データベースの AdventureWorksPDW2012
テーブルの主キーを取得します。 0 行が返され、テーブルに主キーがないことが示されます。
-- Uses AdventureWorksPDW
EXEC sp_pkeys @table_name = N'DimAccount';
参照
ストアド プロシージャ カタログ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)