Freigeben über


sp_foreignkeys (Transact-SQL)

Gilt für: SQL Server

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

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @table_server = ] N'table_server'

Der Name des verknüpften Servers, für den Tabelleninformationen zurückgegeben werden sollen. @table_server ist "sysname" ohne Standard.

[ @pktab_name = ] N'pktab_name'

Der Name der Tabelle mit einem Primärschlüssel. @pktab_name ist "sysname" mit einem Standardwert von NULL.

[ @pktab_schema = ] N'pktab_schema'

Der Name des Schemas mit einem Primärschlüssel. @pktab_schema ist "sysname" mit dem Standardwert "NULL. In SQL Server enthält dieser Parameter den Besitzernamen.

[ @pktab_catalog = ] N'pktab_catalog'

Der Name des Katalogs mit einem Primärschlüssel. @pktab_catalog ist "sysname" mit der Standardeinstellung "NULL. In SQL Server enthält dieser Parameter den Datenbanknamen.

[ @fktab_name = ] N'fktab_name'

Der Name der Tabelle mit einem Fremdschlüssel. @fktab_name ist "sysname" mit einem Standardwert von NULL.

[ @fktab_schema = ] N'fktab_schema'

Der Name des Schemas mit einem Fremdschlüssel. @fktab_schema ist "sysname" mit einem Standardwert von NULL.

[ @fktab_catalog = ] N'fktab_catalog'

Der Name des Katalogs mit einem Fremdschlüssel.@fktab_catalog ist "sysname" mit einem Standardwert von NULL.

Rückgabecodewerte

Keine.

Resultset

Verschiedene DbMS-Produkte (Database Management System) unterstützen die dreiteilige Benennung für Tabellen (<catalog>.<schema>.<table>), die im Resultset dargestellt werden.

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 oder -spalten für jede Spalte der TABLE_NAME zurückgegebenen Spalte. 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 TABLE_NAME zurückgegebenen. 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 ein Update handelt. SQL Server gibt 0, 1 oder 2 für diese Spalten zurück:

0 = CASCADE Änderungen am Fremdschlüssel.
1 = NO ACTION ändert sich, wenn Fremdschlüssel vorhanden ist.
2 = SET_NULL; Fremdschlüssel auf NULL.
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 Änderungen am Fremdschlüssel.
1 = NO ACTION ändert sich, wenn Fremdschlüssel vorhanden ist.
2 = SET_NULL; Fremdschlüssel auf NULL.
FK_NAME sysname Der Fremdschlüsselbezeichner. Dies gilt NULL nicht für die Datenquelle. SQL Server gibt den Einschränkungsnamen FOREIGN KEY zurück.
PK_NAME sysname Der Primärschlüsselbezeichner. Dies gilt NULL nicht für die Datenquelle. SQL Server gibt den Einschränkungsnamen PRIMARY KEY zurück.
DEFERRABILITY smallint Gibt an, ob die Einschränkungsüberprüfung verzögert werden kann.

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

Hinweise

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 @column werden an diese Schnittstelle übergeben, um die zurückgegebenen Zeilen einzuschränken.

Berechtigungen

Erfordert die SELECT-Berechtigung im Schema.

Beispiele

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

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