sp_pkeys (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric のウェアハウス

現在の環境における、単一のテーブルに関する主キーの情報を返します。

Transact-SQL 構文表記規則

構文

-- 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'
情報を返す対象となるテーブルです。 namesysname であり、既定値はありません。 ワイルドカードのパターン マッチングはサポートされていません。

[ @table_owner= ] 'owner'
指定したテーブルのテーブル所有者を指定します。 ownersysname であり、既定値は NULL です。 ワイルドカードのパターン マッチングはサポートされていません。 owner を指定しないと、基になる DBMS の既定のテーブル可視性ルールが適用されます。

SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 owner を指定せず、指定した name を持つテーブルを現在のユーザーが所有していない場合、このプロシージャでは、データベース所有者によって所有されていて、指定した name を持つテーブルが検索されます。 そのテーブルが存在する場合、そのテーブルの列が返されます。

[ @table_qualifier= ] 'qualifier'
テーブルの修飾子です。 qualifiersysname であり、既定値は 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)