sp_pkeys (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のウェアハウス
現在の環境における、単一のテーブルに関する主キーの情報を返します。
構文
SQL Server、Azure SQL Database、Azure Synapse Analytics、Analytics Platform System (PDW) の構文。
sp_pkeys
[ @table_name = ] N'table_name'
[ , [ @table_owner = ] N'table_owner' ]
[ , [ @table_qualifier = ] N'table_qualifier' ]
[ ; ]
引数
[ @table_name = ] N'table_name'
情報を返すテーブルを指定します。 @table_name は sysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。
[ @table_owner = ] N'table_owner'
指定したテーブルのテーブル所有者を指定します。 @table_owner は sysname で、既定値は NULL
です。 ワイルドカード パターン マッチングはサポートされていません。 @table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性ルールが適用されます。
SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameを持つテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定した@table_nameを持つテーブルを検索します。 そのテーブルが存在する場合、そのテーブルの列が返されます。
[ @table_qualifier = ] N'table_qualifier'
テーブル修飾子。 @table_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
アクセス許可が必要です。
例
この記事の Transact-SQL コード サンプルは AdventureWorks2022
または AdventureWorksDW2022
サンプル データベースを使用します。このサンプル データベースは、Microsoft SQL Server サンプルとコミュニティ プロジェクトのホーム ページからダウンロードできます。
次の例では、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';