sp_fkeys (Transact-SQL)
Gibt logische Fremdschlüsselinformationen für die aktuelle Umgebung zurück. Diese Prozedur zeigt Fremdschlüsselbeziehungen an, wobei auch deaktivierte Fremdschlüssel berücksichtigt werden.
Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Transact-SQL-Syntaxkonventionen
Syntax
sp_fkeys [ @pktable_name = ] 'pktable_name'
[ , [ @pktable_owner = ] 'pktable_owner' ]
[ , [ @pktable_qualifier = ] 'pktable_qualifier' ]
{ , [ @fktable_name = ] 'fktable_name' }
[ , [ @fktable_owner = ] 'fktable_owner' ]
[ , [ @fktable_qualifier = ] 'fktable_qualifier' ]
Argumente
[ @pktable\_name=\] 'pktable_name'
Der Name der Tabelle mit dem Primärschlüssel, mit der Kataloginformationen zurückgegeben werden. pktable_name ist vom Datentyp sysname. Der Standardwert ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Dieser Parameter oder der fktable_name-Parameter (oder beide) müssen angegeben werden.[ @pktable\_owner=\] 'pktable_owner'
Der Name des Eigentümers der Tabelle mit dem Primärschlüssel, die verwendet wird, um Kataloginformationen zurückzugeben. pktable_owner ist vom sysname-Datentyp und weist den Standardwert NULL auf. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn pktable_owner nicht angegeben wird, gelten die Standardregeln für die Sichtbarkeit von Tabellen des zugrunde liegenden DBMS.In SQL Server bedeutet dies: Wenn der aktuelle Benutzer eine Tabelle mit dem angegebenen Namen besitzt, werden die Spalten dieser Tabelle zurückgegeben. Wenn pktable_owner nicht angegeben wird und der aktuelle Benutzer keine Tabelle mit dem angegebenen Wert für pktable_name besitzt, wird nach einer Tabelle mit dem angegebenen Wert für pktable_name gesucht, die im Besitz des Datenbankbesitzers ist. Sofern eine solche Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.
[ @pktable\_qualifier =] 'pktable_qualifier'
Der Name des Qualifizierers der Tabelle (mit dem Primärschlüssel). pktable_qualifier ist vom Datentyp sysname. Der Standardwert ist NULL. Verschiedene DBMS-Produkte unterstützen eine dreiteilige Namensgebung für Tabellen (qualifier.owner.name). In SQL Server stellt der Qualifizierer den Datenbanknamen dar. Bei anderen Produkten stellt er den Servernamen der Datenbankumgebung für die Tabelle dar.[ @fktable\_name=\] 'fktable_name'
Der Name der Tabelle (mit einem Fremdschlüssel), mit der Kataloginformationen zurückgegeben werden. fktable_name ist vom Datentyp sysname. Der Standardwert ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Dieser Parameter oder der pktable_name-Parameter (oder beide) müssen angegeben werden.[ @fktable\_owner =] 'fktable_owner'
Der Name des Besitzers der Tabelle (mit einem Fremdschlüssel), mit der Kataloginformationen zurückgegeben werden. fktable_owner ist vom Datentyp sysname. Der Standardwert ist NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn fktable_owner nicht angegeben wird, gelten die Standardregeln für die Sichtbarkeit von Tabellen des zugrunde liegenden DBMS.In SQL Server bedeutet dies: Wenn der aktuelle Benutzer eine Tabelle mit dem angegebenen Namen besitzt, werden die Spalten dieser Tabelle zurückgegeben. Wenn fktable_owner nicht angegeben wird und der aktuelle Benutzer keine Tabelle mit dem angegebenen Wert für fktable_name besitzt, wird nach einer Tabelle mit dem angegebenen Wert für fktable_name gesucht, die im Besitz des Datenbankbesitzers ist. Sofern eine solche Tabelle vorhanden ist, werden die Spalten dieser Tabelle zurückgegeben.
[ @fktable\_qualifier= ] 'fktable_qualifier'
Der Name des Qualifizierers der Tabelle (mit einem Fremdschlüssel). fktable_qualifier ist vom Datentyp sysname. Der Standardwert ist NULL. In SQL Server stellt der Qualifizierer den Datenbanknamen dar. Bei anderen Produkten stellt er den Servernamen der Datenbankumgebung für die Tabelle dar.
Rückgabecodewerte
Keine Angabe
Resultsets
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
PKTABLE_QUALIFIER |
sysname |
Der Name des Qualifizierers der Tabelle (mit dem Primärschlüssel). Dieses Feld kann den Wert NULL aufweisen. |
PKTABLE_OWNER |
sysname |
Der Name des Besitzers der Tabelle (mit dem Primärschlüssel). Dieses Feld gibt immer einen Wert zurück. |
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üsselspalten für jede Spalte des zurückgegebenen TABLE_NAME-Werts. Dieses Feld gibt immer einen Wert zurück. |
FKTABLE_QUALIFIER |
sysname |
Der Name des Qualifizierers der Tabelle (mit einem Fremdschlüssel). Dieses Feld kann den Wert NULL aufweisen. |
FKTABLE_OWNER |
sysname |
Der Name des Besitzers der Tabelle (mit einem Fremdschlüssel). Dieses Feld gibt immer einen Wert zurück. |
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 ein Update handelt. SQL Server gibt 0 oder 1 für diese Spalten zurück: 0=CASCADE; kaskadierende Änderungen am Fremdschlüssel. 1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist. |
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 oder 1 für diese Spalten zurück: 0=CASCADE; kaskadierende Änderungen am Fremdschlüssel. 1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist. |
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. |
Die zurückgegebenen Ergebnisse sind nachFKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME und KEY_SEQ geordnet.
Hinweise
Eine Anwendungscodierung, die Tabellen mit deaktivierten Fremdschlüsseln enthält, kann folgendermaßen implementiert werden:
Deaktivieren Sie bei Verwendung der Tabellen vorübergehend die Überprüfung von Einschränkungen (ALTER TABLE NOCHECK oder CREATE TABLE NOT FOR REPLICATION), und aktivieren Sie sie später wieder.
Erzwingen Sie Beziehungen mithilfe von Triggern oder Anwendungscode.
Wenn für die Primärschlüsseltabelle ein Name, für die Fremdschlüsseltabelle jedoch NULL angegeben wurde, gibt sp_fkeys alle Tabellen mit einem Fremdschlüssel für die angegebene Tabelle zurück. Im umgekehrten Fall, d. h., wenn für die Fremdschlüsseltabelle ein Name, für die Primärschlüsseltabelle jedoch NULL angegeben wird, gibt sp_fkeys alle Tabellen zurück, die einen mit der Fremdschlüsseltabelle in Beziehung stehenden Primärschlüssel besitzen.
Die gespeicherte Prozedur sp_fkeys entspricht SQLForeignKeys in ODBC.
Berechtigungen
Setzt die SELECT-Berechtigung für das Schema voraus.
Beispiele
Im folgenden Beispiel wird eine Liste der Fremdschlüssel für die HumanResources.Department-Tabelle in der AdventureWorks2012-Datenbank abgerufen.
USE AdventureWorks2012;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources';
Siehe auch
Verweis
Gespeicherte Prozeduren für Kataloginformationen (Transact-SQL)