sp_pkeys (Transact-SQL)

Gibt Primärschlüsselinformationen für eine einzelne Tabelle in der aktuellen Umgebung zurück.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_pkeys [ @table_name = ] 'name'     
      [ , [ @table_owner = ] 'owner' ] 
   [ , [ @table_qualifier = ] 'qualifier' ]

Argumente

  • [ @table_name = ] 'name'
    Die Tabelle, für die Informationen zurückgegeben werden sollen. name ist vom Datentyp sysname und hat keinen Standardwert. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt.

  • [ @table_owner = ] 'owner'
    Gibt den Tabellenbesitzer der angegebenen Tabelle an. owner ist vom Datentyp sysname; der Standard ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn owner nicht angegeben wird, gelten die Standardregeln für die Sichtbarkeit von Tabellen des zugrunde liegenden DBMS.

    In SQL Server werden die Spalten einer Tabelle zurückgegeben, wenn der aktuelle Benutzer diese Tabelle mit dem angegebenen Namen besitzt. Wenn der owner nicht angegeben wird und der aktuelle Benutzer keine Tabelle mit dem angegebenen Wert für name besitzt, wird nach einer Tabelle mit dem angegebenen Wert für name gesucht, die im Besitz des Datenbankbesitzers ist. Sofern eine solche Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.

  • [ @table_qualifier = ] 'qualifier'
    Der Tabellenqualifizierer. qualifier ist vom Datentyp sysname, der Standardwert ist NULL. Verschiedene DBMS-Produkte unterstützen eine dreiteilige Benennung für Tabellen (qualifier**.owner.**name). In SQL Server stellt diese Spalte den Datenbanknamen dar. Bei einigen anderen Produkten stellt sie den Servernamen der Datenbankumgebung für die Tabelle dar.

Rückgabecodewerte

Keine

Resultsets

Spaltenname

Datentyp

Beschreibung

TABLE_QUALIFIER

sysname

Der Name des Tabellenqualifizierers. Dieses Feld kann den Wert NULL annehmen.

TABLE_OWNER

sysname

Der Name des Tabellenbesitzers. Dieses Feld gibt immer einen Wert zurück.

TABLE_NAME

sysname

Der Name der Tabelle. In SQL Server stellt diese Spalte den Tabellennamen dar, der in der sysobjects-Tabelle angegeben ist. Dieses Feld gibt immer einen Wert zurück.

COLUMN_NAME

sysname

Der Name der Spalte. Er wird für jede Spalte von TABLE_NAME zurückgegeben. In SQL Server stellt diese Spalte den Spaltennamen dar, der in der sys.columns-Tabelle angegeben ist. Dieses Feld gibt immer einen Wert zurück.

KEY_SEQ

smallint

Die Sequenznummer der Spalte bei einem Primärschlüssel, der durch mehrere Spalten definiert wird.

PK_NAME

sysname

Der Bezeichner für den Primärschlüssel. Der Wert ist NULL, wenn die Datenquelle keine Namen unterstützt.

Hinweise

sp_pkeys gibt Informationen zu den Spalten zurück, die mit einer PRIMARY KEY-Einschränkung explizit definiert werden. Da nicht alle Systeme explizit benannte Primärschlüssel unterstützen, bestimmt die Gateway-Implementierung, was als Primärschlüssel gilt. Beachten Sie, dass sich der Begriff Primärschlüssel auf einen logischen Primärschlüssel für eine Tabelle bezieht. Es wird davon ausgegangen, dass für jeden als logischen Primärschlüssel aufgeführten Schlüssel ein eindeutiger Index definiert ist. Dieser eindeutige Index wird auch in sp_statistics zurückgegeben.

Die gespeicherte Prozedur sp_pkeys entspricht SQLPrimaryKeys in ODBC. Die zurückgegebenen Ergebnisse werden folgendermaßen sortiert: TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME und KEY_SEQ.

Berechtigungen

Erfordert die SELECT-Berechtigung für das Schema.

Beispiele

Im folgenden Beispiel wird der Primärschlüssel für die HumanResources.Department-Tabelle in der AdventureWorks2008R2-Datenbank abgerufen.

USE AdventureWorks2008R2;
GO
EXEC sp_pkeys @table_name = N'Department'
    ,@table_owner = N'HumanResources';