Foreign Key (SQL)

Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springen

Mit dem Foreign Key (deutsch Fremdschlüssel), auch FK genannt, ist eine Constraint Eigenschaft einer Tabelle.

Ein Fremdschlüssel dient der Referenzierung eines Eintrags in einer anderen Tabelle, daher wird er für Relationen verwendet. Hierbei wird sichergestellt, dass dieser Eintrag existieren. Einträge dürfen für den Fremdschlüssel aber null sein. Im Gegensatz zu den Primärschlüssel dürfen mehrere unabhängige Fremdschlüssel in einer Tabelle vorhanden sein. Nach dem ANSI SQL dürfen alle Spalten als Referenz eines Fremdschlüssels verwendet werden, jedoch muss die Spalte unique sein, was durch einen Primary Key oder Umique Constraint realsiert wird.


Definition

Fremdschlüsseldeklaration:

FOREIGN KEY (spalte [,spalte]) REFERENCES tabelle [(spalte [,spalte])]
  [MATCH {FULL | PARTIAL}]
  [ON DELETE { NO ACTION |CASCADE | SET DEFAULT | SET NULL }]
  [ON UPDATE { NO ACTION |CASCADE | SET DEFAULT | SET NULL }]

oder auch

CREATE table (
  ...
  .. spalte  REFERENCES tabelle [(spalte)]
  [MATCH {FULL | PARTIAL}]
  [ON DELETE { NO ACTION |CASCADE | SET DEFAULT | SET NULL }]
  [ON UPDATE { NO ACTION |CASCADE | SET DEFAULT | SET NULL }]
  ...);
  1. Die erste Spaltenangabe beschreibt die Spalte, die als Fremdschlüssel in der aktuellen Tabelle verwendet werden soll. In der 1.Definition sind auch mehrere Spalten möglich wogegen in der 2. nur eine Spalte für den Fremdschlüssel verwendet werden kann.
  2. Die Angabe des Tabellennamens bezeichnet die Tabelle, auf die Referenziert wird.
  3. Die zweite Spaltenangabe bezeichnet die Spalte, auf die in der Zieltabelle verwiesen wird. Diese Angabe ist optional, wenn sie nicht angegeben wird, werden die selben Spaltennamen verwendet.
  4. Die MATCH Anweisung gibt an ob ein Eintrag eines Mehrspaltigen Fremdschlüssels einzelne null Elemente enthalten darf.
  5. Die ON DELETE Anweiswung gibt an was geschehen soll wenn die Daten der Tabelle gelöscht werden, auf die der Fremdschlüssel verweist.
    1. NO ACTION - Erzeugt eine Fehlermeldung, die anzeigt das hier die Konsistenz verletzt wird, dies ist der standard Wert.
    2. CASCADE - Löschen aller Einträge die auf diesen Eintrag verweisen.
    3. SET NULL - Setzen der Einträge auf NULL die auf diesen Eintrag verweisen, wenn der Eintrag gelöscht wird.
    4. SET DFAULT - Setzen des Eintrags auf den default Wert, wenn der Eintrag gelöscht wird.
  6. Die ON UPDATE Anweiswung gibt an was geschehen soll wenn die Daten der Tabelle verändert werden, auf die der Fremdschlüssel verweist.
    1. NO ACTION - Erzeugt eine Fehlermeldung, die anzeigt das hier die Konsistenz verletzt wird, dies ist der standard Wert.
    2. CASCADE - Ändern aller Einträge die auf diesen Eintrag verweisen.
    3. SET NULL - Setzen der Einträge auf NULL die auf diesen Eintrag verweisen, wenn der Eintrag geändert wird.
    4. SET DFAULT - Setzen des Eintrags auf den default Wert, wenn der Eintrag geändert wird.


Beispiel

Definition einer Tabelle mit Fremdschlüssel

CREATE TABLE tab(
  id INTEGER PRIMARY KEY,
  fkspalte INTEGER,
  FOREIGN KEY fkspalte REFERENCES tabelle2 ( id);
);

Weiterführende Artikel