Fehlerkorrektur

Die Fehlerkorrektur gibt an, wie bei Datenänderungen im Fehlerfall mit Fremdschlüsselbeziehungen umgegangen werden soll. Diese Option wird in der <Referenzspezifikation> des FOREIGN-KEY-CONSTRAINTS verwendet unabhängig davon, ob er als Spaltenbedingung oder als Tabellenbedingung formuliert wird.

Syntax der Fehlerkorrektur-Option (SQL)

  <Fehlerkorrektur> ::=
      ON UPDATE <Fehlerkorrektur Aktion>
    | ON DELETE <Fehlerkorrektur Aktion>

 <Fehlerkorrektur Aktion> ::=
      CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION
ON DELETEDie definierte Fehlerkorrekturoption wird ausgeführt, wenn der referenzierte Master-Datensatz gelöscht wird.
ON UPDATEDie definierte Fehlerkorrekturoption wird ausgeführt, wenn der Wert des referenzierten Schlüsselattributs in der Master-Tabelle geändert wird.
CASCADEDie Detaildatensätze, deren Fremdschlüssel den manipulierten Master-Datensatz referenzieren, werden ebenfalls gelöscht (kaskadierendes Löschen) bzw. deren Schlüsselwert wird entsprechend geändert (kaskadierendes Ändern).
SET DEFAULTDie Fremdschlüsselspalten des Detaildatensatzes, die den manipulierten Master-Datensatz referenzieren, werden auf den für diese Spalte definierten DEFAULT-Wert gesetzt.
SET NULLDie Fremdschlüsselspalten des Detail-Datensatzes, die den manipulierten Master-Datensatz referenzieren, werden auf NULL gesetzt.
NO ACTIONAuf den Integritätsfehler wird je nach Prüfungszeitpunkt mit dem Zurückrollen der gesamten Transaktion bzw. der fehlerhaften DML-Anweisung reagiert (Reaktion wie bei den anderen CONSTRAINTS auch).
RESTRICTDiese Option ist analog zur NO ACTION-Funktionalität zu sehen, mit dem kleinen Unterschied, dass bei RESTRICT vorübergehend während der Ausführung der UPDATE- oder DELETE-Anweisung Verletzungen des Fremdschlüssels hingenommen werden, solange am Ende die Bedingungen wieder erfüllt sind.

Bei Oracle ist nur eine sehr eingeschränkte Fehlerkorektur implementiert. Die ON UPDATE-Klausel fehlt gänzlich und die ON DELETE-Klausel verfügt nur über die beiden Optionen CASCADE und SET NULL.

Werden weitergehende Fehlerkorrekturen benötigt, so muss auf eine Integritätsprüfung mittels TRIGGERN ausgewichen werden.

siehe auch Spaltenbedingung, Tabellenbedingung

Quellen:

  • ANSI/ISO/IEC 9075-1:2003. Part 1 "SQL/Framework", ISO International Organization for Standardization / ANSI American National Standards Institute, September 2003
  • ANSI/ISO/IEC 9075-2:2003. Part 2 "SQL/Foundation", ISO International Organization for Standardization / ANSI American National Standards Institute, Dezember 2003
  • Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
  • Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
  • Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
  • Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
  • Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
  • Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
  • Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2

Kategorie: SQL, F