Delen via


sp_pkeys (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Magazijn in Microsoft FabricSQL-database in Microsoft Fabric

Geeft primaire sleutelinformatie terug voor een enkele tabel in de huidige omgeving.

Transact-SQL syntaxis-conventies

Syntaxis

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 = ] N'table_name'

Geeft de tabel aan waarvoor informatie moet worden teruggegeven. @table_name is een systeemnaam, zonder standaard. Wildcard-patroonmatching wordt niet ondersteund.

[ @table_owner = ] N'table_owner'

Specificeert de tabeleigenaar van de opgegeven tabel. @table_owner is sysname, met als standaard .NULL Wildcard-patroonmatching wordt niet ondersteund. Als @table_owner niet is gespecificeerd, gelden de standaard tabelzichtbaarheidsregels van het onderliggende databasebeheersysteem (DBMS).

In SQL Server, als de huidige gebruiker een tabel met de opgegeven naam bezit, worden de kolommen van die tabel teruggegeven. Als de @table_owner niet is gespecificeerd en de huidige gebruiker geen tabel bezit met de opgegeven @table_name, zoekt deze procedure naar een tabel met de gespecificeerde @table_name die eigendom is van de database-eigenaar. Als er een bestaat, worden de kolommen van die tabel teruggegeven.

[ @table_qualifier = ] N'table_qualifier'

De tafelkwalificatie. @table_qualifier is sysname, met als standaard .NULL Verschillende DBMS-producten ondersteunen drieledige naamgeving voor tabellen (<qualifier>.<owner>.<name>). In SQL Server vertegenwoordigt deze kolom de databasenaam. In sommige producten vertegenwoordigt het de servernaam van de databaseomgeving van de tabel.

Codewaarden retourneren

Geen.

Resultaatset

Kolomnaam Gegevenstype Description
TABLE_QUALIFIER sysname Naam van de tabelkwalificatie. Dit veld kan zijn NULL.
TABLE_OWNER sysname Naam van de tafelhouder. Dit veld geeft altijd een waarde terug.
TABLE_NAME sysname Naam van de tabel. In SQL Server vertegenwoordigt deze kolom de tabelnaam zoals vermeld in de sysobjects-tabel. Dit veld geeft altijd een waarde terug.
COLUMN_NAME sysname Naam van de kolom, voor elke kolom van de teruggestuurde TABLE_NAME . In SQL Server vertegenwoordigt deze kolom de kolomnaam zoals vermeld in de sys.columns tabel. Dit veld geeft altijd een waarde terug.
KEY_SEQ smallint Volgnummer van de kolom in een primaire sleutel met meerdere kolommen.
PK_NAME sysname Primaire sleutelidentificatie. Retourneringen NULL als het niet van toepassing is op de databron.

Opmerkingen

sp_pkeys geeft informatie terug over kolommen expliciet gedefinieerd met een PRIMARY KEY constraint. Omdat niet alle systemen expliciet benoemde primaire sleutels ondersteunen, bepaalt de gateway-implementator wat een primaire sleutel is. De term primaire sleutel verwijst naar een logische primaire sleutel voor een tabel. Elke sleutel die als logische primaire sleutel wordt vermeld, wordt verwacht een unieke index te hebben. Deze unieke index wordt ook teruggegeven in sp_statistics.

De sp_pkeys opgeslagen procedure is gelijkwaardig aan die SQLPrimaryKeys in ODBC. De resultaten zijn geordend door TABLE_QUALIFIER, TABLE_OWNER, , TABLE_NAMEen KEY_SEQ.

Permissions

Vereist SELECT toestemming voor het schema.

Voorbeelden

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2025 of AdventureWorksDW2025 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

Het volgende voorbeeld haalt de primaire sleutel voor de HumanResources.Department tabel in de AdventureWorks2025 database op.

USE AdventureWorks2022;
GO

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

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

Het volgende voorbeeld haalt de primaire sleutel voor de DimAccount tabel in de AdventureWorksPDW2012 database op. Het geeft nul rijen terug, wat aangeeft dat de tabel geen primaire sleutel heeft.

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