sp_fkeys (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse in Microsoft Fabric
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.
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 von Datentyp sysname und hat den Standardwert NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Dieser Parameter oder der Parameter fktable_name oder beide müssen angegeben werden.
[ @pktable_owner=] 'pktable_owner'
Der Name des Besitzers der Tabelle (mit dem Primärschlüssel), die zum Zurückgeben von Kataloginformationen verwendet wird. pktable_owner ist vom Datentyp sysname und hat den Standardwert NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn pktable_owner nicht angegeben ist, werden die Standardregeln für die Tabellensichtbarkeit des zugrunde liegenden DBMS angewendet.
In SQL Server bedeutet dies: Wenn der aktuelle Benutzer oder die aktuelle Benutzerin eine Tabelle mit dem angegebenen Namen besitzt, werden die Spalten dieser Tabelle zurückgegeben. Wenn pktable_owner nicht angegeben ist und der aktuelle Benutzer/die aktuelle Benutzerin keine Tabelle mit dem angegebenen pktable_name besitzt, sucht die Prozedur nach einer Tabelle mit dem angegebenen pktable_name im Besitz des Datenbankbesitzers. 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“ und hat den Standardwert NULL. Verschiedene DBMS-Produkte unterstützen eine dreiteilige Benennung für Tabellen (qualifier.owner.name). In SQL Server repräsentiert der Qualifizierer den Datenbanknamen. Bei anderen Produkten stellt sie 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 von Datentyp „sysname“ und hat den Standardwert NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Dieser Parameter oder der Parameter pktable_name 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 und hat den Standardwert NULL. Mustervergleiche mit Platzhalterzeichen werden nicht unterstützt. Wenn fktable_owner nicht angegeben ist, werden die Standardregeln für die Tabellensichtbarkeit des zugrunde liegenden DBMS angewendet.
In SQL Server bedeutet dies: Wenn der aktuelle Benutzer oder die aktuelle Benutzerin eine Tabelle mit dem angegebenen Namen besitzt, werden die Spalten dieser Tabelle zurückgegeben. Wenn fktable_owner nicht angegeben ist und der aktuelle Benutzer/die aktuelle Benutzerin keine Tabelle mit dem angegebenen fktable_name besitzt, sucht die Prozedur nach einer Tabelle mit dem angegebenen fktable_name im Besitz des Datenbankbesitzers. 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 und hat den Standardwert NULL. In SQL Server repräsentiert der Qualifizierer den Datenbanknamen. Bei anderen Produkten stellt sie den Servernamen der Datenbankumgebung für die Tabelle dar.
Rückgabecodewerte
Keine
Resultsets
Spaltenname | Datentyp | BESCHREIBUNG |
---|---|---|
PKTABLE_QUALIFIER | sysname | Der Name des Qualifizierers der Tabelle (mit dem Primärschlüssel). Dieses Feld kann den Wert NULL annehmen. |
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 annehmen. |
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. Mögliche Werte: 0=CASCADE; kaskadierende Änderungen am Fremdschlüssel. 1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist. 2 = Null festlegen 3 = Standardwert 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. Mögliche Werte: 0=CASCADE; kaskadierende Änderungen am Fremdschlüssel. 1=NO ACTION; keine Änderungen, wenn der Fremdschlüssel vorhanden ist. 2 = Null festlegen 3 = Standardwert 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. |
Die zurückgegebenen Informationen werden nach folgenden Spalten sortiert: FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME und KEY_SEQ.
Bemerkungen
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
Erfordert die SELECT
-Berechtigung im Schema.
Beispiele
Im folgenden Beispiel wird eine Liste der Fremdschlüssel für die HumanResources.Department
-Tabelle in der AdventureWorks2022
-Datenbank abgerufen.
USE AdventureWorks2022;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources';
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
Im folgenden Beispiel wird eine Liste der Fremdschlüssel für die DimDate
-Tabelle in der AdventureWorksPDW2012
-Datenbank abgerufen. Es werden keine Zeilen zurückgegeben, da Azure Synapse Analytics keine Fremdschlüssel unterstützt.
EXEC sp_fkeys @pktable_name = N'DimDate';
Weitere Informationen
Gespeicherte Prozeduren für Kataloginformationen (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
sp_pkeys (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für