Zwischen zwei Tabellen läßt sich eine Abhängigkeit definieren, die Auswirkungen auf die Veränderung von Zeilen hat.
Tabelle kunde
Dieser Zusammenhang wird als referentielle Integritätsbedingung bezeichnet und bei der Definition der Tabelle 'buchung' festgelegt. Es wird eine Abhängigkeit der Tabelle 'buchung' von 'kunde' definiert, indem 'buchung' einen sogenannten Fremdschlüssel zugewiesen bekommt, 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)
Der Name der referentiellen Integritätsbedingung kann entweder vom Benutzer nach den Schlüsselworten FOREIGN KEY angegeben werden, oder er wird von der Datenbank selbst vergeben. Die Namen der beteiligten Tabellen werden dann - durch einen Unterstrich getrennt konkateniert (bis zu einer maximalen Länge von 18 Zeichen).
Die im obigen Beispiel definierte Beziehung bekommt den Namen 'kunde_buchung'.
Über ein hinter DELETE anzugebendes Schlüsselwort kann festgelegt werden, was mit abhängigen Werten bei Löschung von Zeilen geschieht.
Wenn Zeilen der Kundentabelle gelöscht werden, muß sichergestellt sein, daß keine Buchungen mehr dafür vorhanden sind. Ist das doch der Fall, kann der Benutzer unter verschiedenen Möglichkeiten wählen:
Er gibt in der Anweisung
ON DELETE RESTRICT
an. Er erhält dann eine Warnung und kann entsprechend reagieren.
Er verlangt, daß zugehörige Buchungszeilen ebenfalls automatisch gelöscht werden:
ON DELETE CASCADE
Er kann aber auch erreichen, daß in den betroffenen Buchungszeilen die nun sinnlos gewordene Kundennummer auf den NULL-Wert oder einen Standardwert gesetzt wird:
ON DELETE SET NULL ON DELETE SET DEFAULT
Der oben definierte Zusammenhang wird auch in der umgekehrten Richtung überwacht. Das Einfügen einer neuen Buchung oder das entsprechende Ändern einer bestehenden Buchung, zu der kein Kunde vorhanden ist, wird unabhängig von der DELETE-Regel verhindert.
Mit einem speziellen ALTER-TABLE-Kommando kann eine referentielle Integritätsbedingung wieder gelöscht werden.
Die Abhängigkeit der Tabellen 'buchung' und 'kunde' ist nicht mehr erwünscht und soll wieder aufgehoben werden:
ALTER TABLE buchung DROP FOREIGN KEY kunde_buchung