sp_foreignkeys (Transact-SQL)
Gibt die Fremdschlüssel zurück, die auf Primärschlüssel in der Tabelle auf dem Verbindungsserver verweisen.
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';
Siehe auch