Freigeben über


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.

Themenlink (Symbol)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, die verwendet wird, um Kataloginformationen zurückzugeben. pktable_name ist vom sysname-Datentyp und weist den Standardwert NULL auf. 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.

    Wenn @pktable_owner nicht angegeben wurde, wird nur das dbo-Schema durchsucht.

  • [ @pktable_qualifier = ] 'pktable_qualifier'
    Der Name des Qualifizierers der Tabelle mit dem Primärschlüssel. pktable_qualifier ist vom sysname-Datentyp und weist den Standardwert NULL auf. 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 sie den Servernamen der Datenbankumgebung für die Tabelle dar.
  • [ @fktable_name = ] 'fktable_name'
    Der Name der Tabelle mit einem Fremdschlüssel, die verwendet wird, um Kataloginformationen zurückzugeben. fktable_name ist vom sysname-Datentyp und weist den Standardwert NULL auf. 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 Eigentümers der Tabelle mit einem Fremdschlüssel, die verwendet wird, um Kataloginformationen zurückzugeben. fktable_owner ist vom sysname-Datentyp und weist den Standardwert NULL auf. 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.

    Wenn @fktable_owner nicht angegeben wurde, wird nur das dbo-Schema durchsucht.

  • [ @fktable_qualifier =] 'fktable_qualifier'
    Der Name des Qualifizierers der Tabelle mit einem Fremdschlüssel. fktable_qualifier ist vom sysname-Datentyp und weist den Standardwert NULL auf. In SQL Server stellt der Qualifizierer den Datenbanknamen dar. 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

Der 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-Wertes. 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-Wertes. 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

Auf den Fremdschlüssel angewendete Aktion, wenn der SQL-Vorgang eine Aktualisierung ist. 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.

2=SET_NULL; Fremdschlüssel auf NULL festlegen.

DELETE_RULE

smallint

Auf den Fremdschlüssel angewendete Aktion, wenn der SQL-Vorgang eine Löschung ist. 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.

2=SET_NULL; Fremdschlüssel auf NULL festlegen.

FK_NAME

sysname

Der Bezeichner für den Fremdschlüssel. Ist NULL, wenn er auf die Datenquelle nicht anwendbar ist. SQL Server gibt den FOREIGN KEY-Einschränkungsnamen zurück.

PK_NAME

sysname

Der Bezeichner für den Primärschlüssel. Ist NULL, wenn er auf die Datenquelle nicht anwendbar ist. SQL Server gibt den PRIMARY KEY-Einschränkungsnamen zurück.

Die zurückgegebenen Informationen werden nach folgenden Spalten sortiert: FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME und KEY_SEQ.

Hinweise

Eine Anwendungscodierung, die Tabellen mit deaktivierten Fremdschlüsseln enthält, kann folgendermaßen implementiert werden:

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 AdventureWorks-Datenbank abgerufen.

USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department',
   @pktable_owner = N'HumanResources'

Siehe auch

Verweis

Gespeicherte Prozeduren für Kataloginformationen (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
sp_pkeys (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005