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';