Erstellen und Ändern von FOREIGN KEY-Einschränkungen

Sie können eine FOREIGN KEY-Einschränkung als Bestandteil der Tabellendefinition erstellen, wenn Sie eine Tabelle erstellen. Wenn die Tabelle bereits vorhanden ist, können Sie eine FOREIGN KEY-Einschränkung hinzufügen, vorausgesetzt, die FOREIGN KEY-Einschränkung ist mit einer vorhandenen PRIMARY KEY-Einschränkung oder UNIQUE-Einschränkung in einer anderen (oder derselben) Tabelle verknüpft. Eine Tabelle kann mehrere FOREIGN KEY-Einschränkungen enthalten.

Falls bereits eine FOREIGN KEY-Einschränkung vorhanden ist, können Sie diese ändern oder löschen. So kann es z. B. gewünscht sein, dass die FOREIGN KEY-Einschränkung der Tabelle auf andere Spalten verweist. Allerdings ist es nicht möglich, die Länge einer durch eine FOREIGN KEY-Einschränkung definierten Spalte zu ändern.

HinweisHinweis

Um eine FOREIGN KEY-Einschränkung zu ändern, müssen Sie zuerst die vorhandene FOREIGN KEY-Einschränkung löschen und sie dann mit der neuen Definition neu erstellen.

Löschen Sie eine FOREIGN KEY-Einschränkung, damit die referenzielle Integrität zwischen den Fremdschlüsselspalten und den verbundenen Primärschlüsselspalten (oder Spalten in UNIQUE-Einschränkungen) in einer anderen Tabelle entfernt wird.

So erstellen Sie eine FOREIGN KEY-Einschränkung beim Erstellen einer Tabelle

CREATE TABLE (Transact-SQL)

So erstellen Sie eine FOREIGN KEY-Einschränkung für eine vorhandene Tabelle

ALTER TABLE (Transact-SQL)

Vorgehensweise: Erstellen von Beziehungen zwischen Tabellen (Visual Database Tools)

So löschen Sie eine FOREIGN KEY-Einschränkung

ALTER TABLE (Transact-SQL)

Erzwingen einer FOREIGN KEY-Einschränkung mithilfe von WITH NOCHECK

Wenn eine FOREIGN KEY-Einschränkung einer vorhandenen Spalte oder vorhandenen Spalten in der Tabelle hinzugefügt wird, überprüft Database Engine (Datenbankmodul) standardmäßig die vorhandenen Daten in den Spalten, um sicherzustellen, dass alle Werte außer NULL in den Spalten der PRIMARY KEY- oder UNIQUE-Einschränkung, auf die verwiesen wird, vorhanden sind. Durch Angeben von WITH NOCHECK kann jedoch verhindert werden, dass Database Engine (Datenbankmodul) die Spaltendaten anhand der neuen Einschränkung überprüft, sodass die neue Einschränkung ungeachtet der Daten in der Spalte hinzugefügt wird. Die WITH NOCHECK-Option ist dann sinnvoll, wenn die vorhandenen Daten bereits der neuen FOREIGN KEY-Einschränkung entsprechen oder wenn es aufgrund von Geschäftsregeln erforderlich ist, dass die Einschränkung erst ab einem bestimmten Zeitpunkt erzwungen wird.

Sie sollten jedoch sehr sorgfältig vorgehen, wenn Sie eine Einschränkung ohne Überprüfung der vorhandenen Daten hinzufügen, da auf diese Weise die Kontrollmechanismen in Database Engine (Datenbankmodul) umgangen werden, die die Datenintegrität der Tabelle erzwingen.

So verhindern Sie die Überprüfung vorhandener Daten, wenn Sie eine FOREIGN KEY-Einschränkung erstellen

ALTER TABLE (Transact-SQL)

Deaktivieren von FOREIGN KEY-Einschränkungen

Sie können vorhandene FOREIGN KEY-Einschränkung für bestimmte Operationen deaktivieren, z. B. für INSERT-Operationen, UPDATE-Operationen und die Replikationsverarbeitung.

  • INSERT- und UPDATE-Anweisungen

    Durch das Deaktivieren einer FOREIGN KEY-Einschränkung können die Daten in der Tabelle geändert werden, ohne durch die Einschränkungen überprüft zu werden. Deaktivieren Sie eine FOREIGN KEY-Einschränkung während der Ausführung einer der Anweisungen von INSERT und UPDATE, wenn neue Daten die Einschränkung verletzen würden oder wenn die Einschränkung nur für die Daten gelten soll, die sich bereits in der Datenbank befinden.

    HinweisHinweis

    Alle kaskadierenden Aktionen, die ggf. für einen zugehörigen Primärschlüssel definiert wurden, werden nicht für Zeilen ausgeführt, die deaktivierte Fremdschlüssel enthalten.

  • Replikationsverarbeitung

    Deaktivieren Sie eine FOREIGN KEY-Einschränkung während der Replikation, wenn die Einschränkung nur für die Quelldatenbank gilt. Wenn eine Tabelle repliziert wird, werden die Tabellendefinition und die Daten von der Quelldatenbank in die Zieldatenbank kopiert. Wenn die FOREIGN KEY-Einschränkungen nur für die Quelldatenbank gelten, jedoch während der Replikation nicht deaktiviert werden, kann dies dazu führen, dass das Eingeben neuer Daten in die Zieldatenbank unnötigerweise verhindert wird. Weitere Informationen finden Sie unter Steuern von Einschränkungen, Identitäten und Triggern mithilfe von NOT FOR REPLICATION.

So deaktivieren Sie eine FOREIGN KEY-Einschränkung für INSERT- und UPDATE-Anweisungen

ALTER TABLE (Transact-SQL)

Vorgehensweise: Deaktivieren von Fremdschlüsseleinschränkungen mit INSERT- und UPDATE-Anweisungen (Visual Database Tools)

So deaktivieren Sie eine FOREIGN KEY-Einschränkung für die Replikation

ALTER TABLE (Transact-SQL)

Vorgehensweise: Deaktivieren von Fremdschlüsseleinschränkungen für die Replikation (Visual Database Tools)

So rufen Sie Informationen zu FOREIGN KEY-Einschränkungen ab

sys.foreign_keys (Transact-SQL)

So rufen Sie Informationen zu Spalten ab, aus denen eine FOREIGN KEY-Einschränkung besteht

sys.foreign_key_columns (Transact-SQL)

Siehe auch

Konzepte