sp_foreignkeys (Transact-SQL)

Gilt für: SQL Server (alle unterstützten Versionen)

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

ThemenlinksymbolTransact-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' Ist der Name des verknüpften Servers, für den Tabelleninformationen zurückgegeben werden sollen. table_server ist sysname ohne Standard.

[ @pktab_name = ] 'pktab_name' Ist der Name der Tabelle mit einem Primärschlüssel. pktab_name ist sysname, mit einem Standardwert von NULL.

[ @pktab_schema = ] 'pktab_schema' Ist der Name des Schemas mit einem Primärschlüssel. pktab_schemaist sysname, mit einem Standardwert von NULL. In SQL Server enthält dies den Besitzernamen.

[ @pktab_catalog = ] 'pktab_catalog' Ist der Name des Katalogs mit einem Primärschlüssel. pktab_catalogist sysname, mit einem Standardwert von NULL. In SQL Server enthält dies den Datenbanknamen.

[ @fktab_name = ] 'fktab_name' Ist der Name der Tabelle mit einem Fremdschlüssel. fktab_nameist sysname, mit einem Standardwert von NULL.

[ @fktab_schema = ] 'fktab_schema' Ist der Name des Schemas mit einem Fremdschlüssel. fktab_schemaist sysname mit einem Standardwert von NULL.

[ @fktab_catalog = ] 'fktab_catalog' Ist der Name des Katalogs mit einem Fremdschlüssel. fktab_catalogist sysname, mit einem Standardwert von NULL.

Rückgabecodewerte

Keine

Resultsets

Verschiedene DBMS-Produkte unterstützen dreiteilige Benennungen für Tabellen (Katalog).schema.tabelle), 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 Name der Primärschlüsselspalte oder Spalten für jede Spalte der zurückgegebenen TABLE_NAME . 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 Name der Fremdschlüsselspalten für jede Spalte der zurückgegebenen TABLE_NAME. Dieses Feld gibt immer einen Wert zurück.
KEY_SEQ smallint Sequenznummer der Spalte in einem mehrspaltigen Primärschlüssel. 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 ein Update 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. Ist NULL, wenn er 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. Ist NULL, wenn er 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.

Bemerkungen

sp_foreignkeys fragt das FOREIGN_KEYS Rowset der IDBSchemaRowset-Schnittstelle des OLE DB-Anbieters ab, der table_server entspricht. Die parameter table_name, table_schema, table_catalog und Spalten werden an diese Schnittstelle übergeben, um die zurückgegebenen Zeilen einzuschränken.

Berechtigungen

Erfordert SELECT-Berechtigung für das Schema.

Beispiele

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

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

Weitere Informationen

sp_catalogs (Transact-SQL)
sp_column_privileges (Transact-SQL)
sp_indexes (Transact-SQL)
sp_linkedservers (Transact-SQL)
sp_primarykeys (Transact-SQL)
sp_tables_ex (Transact-SQL)
sp_table_privileges (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)