sp_fkeys (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics 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 = ] N'pktable_name' ]
[ , [ @pktable_owner = ] N'pktable_owner' ]
[ , [ @pktable_qualifier = ] N'pktable_qualifier' ]
[ , [ @fktable_name = ] N'fktable_name' ]
[ , [ @fktable_owner = ] N'fktable_owner' ]
[ , [ @fktable_qualifier = ] N'fktable_qualifier' ]
[ ; ]
Argumente
[ @pktable_name = ] N'pktable_name'
Der Name der Tabelle mit dem Primärschlüssel, der zum Zurückgeben von Kataloginformationen verwendet wird. @pktable_name ist "sysname" mit einem Standardwert von NULL
. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Dieser Parameter oder der parameter @fktable_name oder beides muss angegeben werden.
[ @pktable_owner = ] N'pktable_owner'
Der Name des Besitzers der Tabelle (mit dem Primärschlüssel), der zum Zurückgeben von Kataloginformationen verwendet wird. @pktable_owner ist "sysname" mit der Standardeinstellung "NULL
. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Wenn @pktable_owner nicht angegeben ist, gelten die Standardtabellensichtsregeln des zugrunde liegenden Datenbankverwaltungssystems (DBMS).
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 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 = ] N'pktable_qualifier'
Der Name der Tabelle (mit dem Primärschlüssel)-Qualifizierer. @pktable_qualifier ist "sysname" mit der Standardeinstellung "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 = ] N'fktable_name'
Der Name der Tabelle (mit einem Fremdschlüssel), der zum Zurückgeben von Kataloginformationen verwendet wird. @fktable_name ist "sysname" mit dem Standardwert "NULL
. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Dieser Parameter oder der parameter @pktable_name oder beides muss angegeben werden.
[ @fktable_owner = ] N'fktable_owner'
Der Name des Besitzers der Tabelle (mit einem Fremdschlüssel), der zum Zurückgeben von Kataloginformationen verwendet wird. @fktable_owner ist "sysname" mit dem Standardwert "NULL
. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Wenn @fktable_owner nicht angegeben ist, gelten die Standardtabellensichtsregeln der zugrunde liegenden DBMS.
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 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 = ] N'fktable_qualifier'
Der Name der Tabelle (mit einem Fremdschlüssel)-Qualifizierer. @fktable_qualifier ist "sysname" mit der Standardeinstellung "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.
Resultset
Spaltenname | Datentyp | Beschreibung |
---|---|---|
PKTABLE_QUALIFIER |
sysname | Der Name des Qualifizierers der Tabelle (mit dem Primärschlüssel). Dieses Feld kann sein NULL . |
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 der TABLE_NAME zurückgegebenen Spalte. Dieses Feld gibt immer einen Wert zurück. |
FKTABLE_QUALIFIER |
sysname | Der Name des Qualifizierers der Tabelle (mit einem Fremdschlüssel). Dieses Feld kann sein NULL . |
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 | Name der Fremdschlüsselspalte 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. Mögliche Werte:0 = CASCADE Änderungen am Fremdschlüssel.1 = NO ACTION ändert sich, wenn Fremdschlüssel vorhanden ist.2 = SET_NULL 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 Änderungen am Fremdschlüssel.1 = NO ACTION ändert sich, wenn Fremdschlüssel vorhanden ist.2 = SET_NULL 3 = Standard festlegen |
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. |
Die zurückgegebenen Ergebnisse werden nach FKTABLE_QUALIFIER
, , FKTABLE_OWNER
, FKTABLE_NAME
und KEY_SEQ
.
Hinweise
Anwendungscodierung, die Tabellen mit deaktivierten Fremdschlüsseln enthält, können mit den folgenden Methoden implementiert werden:
Vorübergehendes Deaktivieren der Einschränkungsüberprüfung (
ALTER TABLE NOCHECK
oderCREATE TABLE NOT FOR REPLICATION
) beim Arbeiten mit den Tabellen, und aktivieren Sie sie später erneut.Erzwingen Sie Beziehungen mithilfe von Triggern oder Anwendungscode.
Wenn der Primärschlüsseltabellenname angegeben wird und der Fremdschlüsseltabellenname lautet NULL
, werden alle Tabellen zurückgegeben, sp_fkeys
die einen Fremdschlüssel zur angegebenen Tabelle enthalten. Wenn der Name der Fremdschlüsseltabelle angegeben wird und der Primärschlüsseltabellenname lautet NULL
, werden alle Tabellen zurückgegeben, sp_fkeys
die mit einer Primärschlüssel-/Fremdschlüsselbeziehung zu Fremdschlüsseln in der Fremdschlüsseltabelle verknüpft sind.
Die sp_fkeys
gespeicherte Prozedur 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';