Freigeben über


REFERENTIAL_CONSTRAINTS (Transact-SQL)

Gibt eine Zeile für jede FOREIGN KEY-Einschränkung in der aktuellen Datenbank zurück. Diese Informationsschemasicht gibt Informationen zu den Objekten zurück, für die der aktuelle Benutzer über Berechtigungen verfügt.

Geben Sie zum Abrufen von Informationen aus diesen Sichten den vollqualifizierten Namen (INFORMATION_SCHEMA.view_name) an.

Spaltenname

Datentyp

Beschreibung

CONSTRAINT_CATALOG

nvarchar(128)

Einschränkungsqualifizierer

CONSTRAINT_SCHEMA

nvarchar(128)

Name des Schemas, das die Einschränkung enthält.

Wichtiger HinweisWichtig
Verwenden Sie keine INFORMATION_SCHEMA-Sichten, um das Schema eines Objekts zu bestimmen. Die einzige zuverlässige Art, das Schema eines Objekts zu finden, ist das Abfragen der sys.objects-Katalogsicht oder der OBJECT_SCHEMA_NAME-Funktion.

CONSTRAINT_NAME

sysname

Einschränkungsname

UNIQUE_CONSTRAINT_CATALOG

nvarchar(128)

Der UNIQUE-Einschränkungsqualifizierer.

UNIQUE_CONSTRAINT_SCHEMA

nvarchar(128)

Der Name des Schemas, das die UNIQUE-Einschränkung enthält.

Wichtiger HinweisWichtig
Verwenden Sie keine INFORMATION_SCHEMA-Sichten, um das Schema eines Objekts zu bestimmen. Die einzige zuverlässige Art, das Schema eines Objekts zu finden, ist das Abfragen der sys.objects-Katalogsicht oder der OBJECT_SCHEMA_NAME-Funktion.

UNIQUE_CONSTRAINT_NAME

sysname

UNIQUE-Einschränkung

MATCH_OPTION

varchar(7)

Referenzielle Bedingungen für die Übereinstimmung von Einschränkungen. Es wird immer SIMPLE zurückgegeben. Dies bedeutet, dass keine Übereinstimmung definiert ist. Die Bedingung wird als Übereinstimmung betrachtet, wenn eine der folgenden Bedingungen zutrifft:

  • Mindestens ein Wert in der Fremdschlüsselspalte ist NULL.

  • Keiner der Werte in der Fremdschlüsselspalte ist NULL, und in der Primärschlüsseltabelle ist eine Zeile mit demselben Schlüssel vorhanden.

UPDATE_RULE

varchar(11)

Die Aktion, die ausgeführt wird, wenn eine Transact-SQL-Anweisung die referenzielle Integrität verletzt, die durch diese Einschränkung definiert ist.

Gibt einen der folgenden Werte zurück:

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Wenn für diese Einschränkung NO ACTION für ON UPDATE angegeben ist, wird die Aktualisierung des Primärschlüssels, auf den in der Einschränkung verwiesen wird, nicht an den Fremdschlüssel weitergegeben. Wenn diese Aktualisierung des Primärschlüssels zu einer Verletzung der referenziellen Integrität führt, weil mindestens ein Fremdschlüssel denselben Wert aufweist, nimmt SQL Server keine Änderung an der übergeordneten Tabelle und den verweisenden Tabellen vor. Außerdem löst SQL Server einen Fehler aus.

Wenn für diese Einschränkung CASCADE für ON UPDATE angegeben ist, werden alle Änderungen des Primärschlüsselwerts automatisch an den Fremdschlüsselwert weitergegeben.

DELETE_RULE

varchar(11)

Die Aktion, die ausgeführt wird, wenn eine Transact-SQL-Anweisung die referenzielle Integrität verletzt, die durch diese Einschränkung definiert ist.

Gibt einen der folgenden Werte zurück:

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Wenn für diese Einschränkung NO ACTION für ON DELETE angegeben ist, wird das Löschen des Primärschlüssels, auf den in der Einschränkung verwiesen wird, nicht an den Fremdschlüssel weitergegeben. Wenn das Löschen des Primärschlüssels zu einer Verletzung der referenziellen Integrität führt, weil mindestens ein Fremdschlüssel denselben Wert aufweist, nimmt SQL Server keine Änderung an der übergeordneten Tabelle und den verweisenden Tabellen vor. Außerdem löst SQL Server einen Fehler aus.

Wenn für diese Einschränkung CASCADE für ON DELETE angegeben ist, werden alle Änderungen des Primärschlüsselwerts automatisch an den Fremdschlüsselwert weitergegeben.

Beispiele

Das folgende Beispiel gibt Informationen über alle FOREIGN KEY-Einschränkungen im Sales -Schema der Datenbank zurück.

USE AdventureWorks;
GO

SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME, 
    MATCH_OPTION, UPDATE_RULE, DELETE_RULE
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'Sales';