Anfang des InhaltsbereichsReferentielle CONSTRAINT-Definition (referential_constraint_definition) Dokument im Navigationsbaum lokalisieren

Eine referentielle CONSTRAINT-Definition ( referential_constraint_definition ) definiert eine Integritätsbedingung (Beschränkungen für Spaltenwerte, siehe Datenintegrität), der alle Zeilen zweier Tabellen genügen müssen. Die dadurch definierte Abhängigkeit zwischen zwei Tabellen hat Auswirkungen auf Veränderungen, die an deren Zeilen gewünscht werden.

Syntax

<referential_constraint_definition> ::=
FOREIGN KEY [<referential_constraint_name>] (<referencing_column>,...)
REFERENCES <referenced_table> [(<referenced_column>,...)] [<delete_rule>]

referential_constraint_name, delete_rule

referenced_table
referenced_column

referenzierte Tabelle, referenzierte Spalte (Tabelle/Spalte, die angesprochen werden soll)

referencing_column

referenzierende Spalte (Spalte, die die Verbindung zu der anzusprechenden Spalte herstellt)

 

Beispiel

Abhängigkeit zwischen den Beispieltabellen kunde und buchung. Die referentielle CONSTRAINT-Definition wird bei der Definition der Tabelle buchung festgelegt. Der Tabelle buchung wird ein sogenannter Fremdschlüssel zugewiesen, der dem Schlüssel von kunde entspricht.

CREATE TABLE buchung (bnr FIXED (4) KEY, knr FIXED (4), hnr FIXED (4)
raumtyp CHAR (6), ankunft DATE, abreise DATE,
FOREIGN KEY (knr) REFERENCES kunde ON DELETE CASCADE

Die definierte Beziehung bekommt den Namen kunde_buchung . Die DELETE-Regel ON DELETE CASCADE legt fest, daß, wenn Zeilen der Kundentabelle gelöscht werden, die zugehörigen Buchungszeilen ebenfalls automatisch gelöscht werden.

Erläuterung

Eine referentielle CONSTRAINT-Definition kann in einer CREATE TABLE-Anweisung oder ALTER TABLE-Anweisung verwendet werden. Die in der entsprechenden Anweisung angegebene Tabelle ( table_name ) wird im folgenden als referenzierende Tabelle bezeichnet.

Die referenzierenden Spalten ( referencing_column ) werden in der referentiellen CONSTRAINT-Definition angegeben. Die referenzierenden Spalten müssen Spalten der referenzierenden Tabelle bezeichnen und alle voneinander verschieden sein. Sie werden auch als Fremdschlüsselspalten bezeichnet.

Referenzierte Spalten ( referenced_column )

Beziehung zwischen referenzierten und referenzierenden Spalten:

Referenzierende und referenzierte Tabelle müssen Basistabellen, dürfen jedoch keine temporären Tabellen sein.

Der aktuelle Benutzer muß das ALTER-Privileg für die referenzierende Tabelle und das REFERENCE-Privileg für die referenzierte Tabelle haben.

Name eines referentiellen Constraints ( referential_constraint_name )

Der Name eines referentiellen Constraints kann nach den Schlüsselworten FOREIGN KEY angegeben werden.

Einfügen und Ändern von Zeilen der referenzierten Tabelle

Das Einfügen und Ändern von Zeilen der referenzierenden Tabelle unterliegt folgenden Einschränkungen:

Sei Z eine einzufügende oder geänderte Zeile. Das Einfügen und Ändern ist nur dann möglich, wenn für jede zugehörige referenzierte Tabelle ( referenced_table ) eine der folgenden Bedingungen erfüllt ist:

Weitere Begriffe

Ende des Inhaltsbereichs