sp_foreignkeys (Transact-SQL)

Gibt die Fremdschlüssel zurück, die auf Primärschlüssel in der Tabelle auf dem Verbindungsserver verweisen.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_foreignkeys [ @table_server = ] 'table_server' 
     [ , [ @pktab_name = ] 'pktab_name' ] 
     [ , [ @pktab_schema = ] 'pktab_schema' ] 
     [ , [ @pktab_catalog = ] 'pktab_catalog' ] 
     [ , [ @fktab_name = ] 'fktab_name' ] 
     [ , [ @fktab_schema = ] 'fktab_schema' ] 
     [ , [ @fktab_catalog = ] 'fktab_catalog' ]

Argumente

  • [ @table_server = ] 'table_server'
    Der Name des Verbindungsservers, für den Tabelleninformationen zurückgegeben werden sollen. table_server ist vom Datentyp sysname; es gibt keinen Standardwert.

  • [ @pktab_name = ] 'pktab_name'
    Der Name der Tabelle mit einem Primärschlüssel. pktab_name ist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @pktab_schema = ] 'pktab_schema'
    Der Name der Schemas mit einem Primärschlüssel. pktab_schema ist vom Datentyp sysname und hat den Standardwert NULL. In SQL Server 2008 enthält dies den Namen des Besitzers.

  • [ @pktab_catalog = ] 'pktab_catalog'
    Der Name des Katalogs mit einem Primärschlüssel. pktab_catalog ist vom Datentyp sysname und hat den Standardwert NULL. In SQL Server enthält dies den Namen der Datenbank.

  • [ @fktab_name = ] 'fktab_name'
    Der Name der Tabelle mit einem Fremdschlüssel. fktab_nameist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @fktab_schema = ] 'fktab_schema'
    Der Name des Schemas mit einem Fremdschlüssel. fktab_schemaist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @fktab_catalog = ] 'fktab_catalog'
    Der Name des Katalogs mit einem Fremdschlüssel. fktab_catalogist vom Datentyp sysname und hat den Standardwert NULL.

Rückgabecodewerte

Keine

Resultsets

Verschiedene DBMS-Produkte unterstützen eine dreiteilige Namensgebung für Tabellen (catalog**.schema.**table), die im Resultset dargestellt wird.

Spaltenname

Datentyp

Beschreibung

PKTABLE_CAT

sysname

Katalog für die Tabelle, in der sich der Primärschlüssel befindet

PKTABLE_SCHEM

sysname

Schema für die Tabelle, in der sich der Primärschlüssel befindet

PKTABLE_NAME

sysname

Name der Tabelle (mit dem Primärschlüssel). Dieses Feld gibt immer einen Wert zurück.

PKCOLUMN_NAME

sysname

Der Name der Primärschlüsselspalte(n) für jede Spalte des zurückgegebenen TABLE_NAME-Werts. Dieses Feld gibt immer einen Wert zurück.

FKTABLE_CAT

sysname

Katalog für die Tabelle, in der sich der Fremdschlüssel befindet

FKTABLE_SCHEM

sysname

Schema für die Tabelle, in der sich der Fremdschlüssel befindet

FKTABLE_NAME

sysname

Der Name der Tabelle (mit einem Fremdschlüssel). Dieses Feld gibt immer einen Wert zurück.

FKCOLUMN_NAME

sysname

Der Name der Fremdschlüsselspalten für jede Spalte des zurückgegebenen TABLE_NAME-Werts. 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. Dieses Feld gibt immer einen Wert zurück.

UPDATE_RULE

smallint

Die Aktion, die für den Fremdschlüssel ausgeführt wird, wenn es sich bei dem SQL-Vorgang um eine Aktualisierung handelt. SQL Server gibt 0, 1 oder 2 für diese Spalten zurück:

0=CASCADE; kaskadierende Änderungen am Fremdschlüssel.

1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist.

2=SET_NULL; Fremdschlüssel auf NULL festlegen.

DELETE_RULE

smallint

Die Aktion, die für den Fremdschlüssel ausgeführt wird, wenn es sich bei dem SQL-Vorgang um eine Löschung handelt. SQL Server gibt 0, 1 oder 2 für diese Spalten zurück:

0=CASCADE; kaskadierende Änderungen am Fremdschlüssel.

1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist.

2=SET_NULL; Fremdschlüssel auf NULL festlegen.

FK_NAME

sysname

Der Fremdschlüsselbezeichner. Der Wert ist NULL, wenn der Fremdschlüssel auf die Datenquelle nicht anwendbar ist. SQL Server gibt den Namen der FOREIGN KEY-Einschränkung zurück.

PK_NAME

sysname

Der Primärschlüsselbezeichner. Der Wert ist NULL, wenn der Primärschlüssel auf die Datenquelle nicht anwendbar ist. SQL Server gibt den Namen der PRIMARY KEY-Einschränkung zurück.

DEFERRABILITY

smallint

Gibt an, ob die Einschränkungsüberprüfung verzögert werden kann.

Im Resultset geben die Spalten FK_NAME und PK_NAME immer NULL zurück.

Hinweise

sp_foreignkeys führt eine Abfrage des FOREIGN_KEYS-Rowsets für die IDBSchemaRowset-Schnittstelle des OLE DB-Anbieters durch, der table_server entspricht. Die Parameter table_name, table_schema, table_catalog und column werden an diese Schnittstelle übergeben, um die zurückgegebenen Zeilen zu beschränken.

Berechtigungen

Erfordert SELECT-Berechtigung für das Schema.

Beispiele

Das folgende Beispiel gibt Fremdschlüsselinformationen zur Department-Tabelle in der AdventureWorks2008R2-Datenbank auf dem Verbindungsserver Seattle1 zurück.

EXEC sp_foreignkeys @table_server = N'Seattle1', 
   @pktab_name = N'Department', 
   @pktab_catalog = N'AdventureWorks2008R2';