Sdílet prostřednictvím


sp_pkeys (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsPdW (Analytics Platform System)Sklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací informace o primárním klíči pro jednu tabulku v aktuálním prostředí.

Transact-SQL konvence syntaxe

Syntaxe

Syntax for 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' ]
[ ; ]

Arguments

[ @table_name = ] 'Ntable_name'

Specifikuje tabulku, pro kterou se mají vracet informace. @table_name je sysname, bez výchozího nastavení. Wildcard pattern matching není podporován.

[ @table_owner = ] N'table_owner'

Specifikuje vlastníka tabulky dané tabulky. @table_owner je sysname, s výchozím nastavením NULL. Wildcard pattern matching není podporován. Pokud @table_owner není specifikováno, platí výchozí pravidla pro viditelnost tabulek základního databázového systému (DBMS).

V SQL Serveru, pokud aktuální uživatel vlastní tabulku s tímto jménem, sloupce této tabulky se vrátí. Pokud @table_owner není specifikován a aktuální uživatel nevlastní tabulku s daným @table_name, tento postup hledá tabulku s určeným @table_name vlastněným vlastníkem databáze. Pokud existuje, sloupce této tabulky se vrátí.

[ @table_qualifier = ] N'table_qualifier'

Kvalifikace u stolu. @table_qualifier je sysname, s výchozím .NULL Různé produkty DBMS podporují třífázové pojmenování tabulek (<qualifier>.<owner>.<name>). V SQL Serveru tento sloupec představuje název databáze. V některých produktech představuje název serveru databázového prostředí tabulky.

Hodnoty návratového kódu

Žádné.

Sada výsledků

Název sloupce Datový typ Description
TABLE_QUALIFIER sysname Název kvalifikanta na tabulce. Toto pole může být .NULL
TABLE_OWNER sysname Jméno majitele stolu. Toto pole vždy vrací hodnotu.
TABLE_NAME sysname Název tabulky. V SQL Serveru tento sloupec představuje název tabulky, jak je uveden v tabulce sysobjects. Toto pole vždy vrací hodnotu.
COLUMN_NAME sysname Název sloupce, pro každý sloupec vráceného čísla TABLE_NAME . V SQL Serveru tento sloupec představuje název sloupce, jak je uveden v tabulce sys.columns . Toto pole vždy vrací hodnotu.
KEY_SEQ smallint Pořadové číslo sloupce v primárním klíči s více sloupci.
PK_NAME sysname Identifikátor primárního klíče. Vrácení NULL , pokud nejsou relevantní pro datový zdroj.

Poznámky

sp_pkeys vrací informace o sloupcích explicitně definovaných s omezením PRIMARY KEY . Protože ne všechny systémy podporují explicitně pojmenované primární klíče, implementátor brány určuje, co primární klíč představuje. Termín primární klíč označuje logický primární klíč pro tabulku. Každý klíč uvedený jako logický primární klíč by měl mít definovaný unikátní index. Tento jedinečný index je také vrácen v sp_statistics.

Uložená sp_pkeys procedura je ekvivalentní jako SQLPrimaryKeys v ODBC. Výsledky jsou uspořádány podle TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME, a .KEY_SEQ

Povolení

Vyžaduje SELECT povolení ke schématu.

Examples

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .

Následující příklad získává primární klíč HumanResources.Department tabulky v databázi AdventureWorks2025 .

USE AdventureWorks2022;
GO

EXECUTE sp_pkeys
    @table_name = N'Department',
    @table_owner = N'HumanResources';

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

Následující příklad získává primární klíč DimAccount tabulky v databázi AdventureWorksPDW2012 . Vrací nulové řádky, což znamená, že tabulka nemá primární klíč.

-- Uses AdventureWorksPDW
EXECUTE sp_pkeys @table_name = N'DimAccount';