Im einfachsten Fall wird die referenzielle Integrität beim Aktualisieren oder Löschen eines referenzierten Primärschlüssels dadurch bewahrt, dass Aktualisieren oder Löschen nicht erlaubt werden. Oft ist es jedoch auch möglich, für jeden Fremdschlüssel eine Maßnahme zu ergreifen, um die referenzielle Integrität aufrechtzuerhalten. Mit den Anweisungen CREATE TABLE und ALTER TABLE kann der Datenbankadministrator bzw. der Tabelleneigentümer angeben, welche Maßnahmen in Bezug auf Fremdschlüssel bei einer Verletzung ergriffen werden müssen, die sich auf einen geänderten Primärschlüssel beziehen.
Aktionen zur referenziellen Integrität werden durch physische, nicht logische, Aktualisierungen des eindeutigen Werts ausgelöst. Beispielsweise wird selbst in einer Datenbank ohne Berücksichtigung von Groß- und Kleinschreibung durch das Aktualisieren des Primärschlüsselwerts von SAMPLE-VALUE auf sample-value eine Aktion zur referenziellen Integrität ausgelöst, auch wenn die beiden Werte logisch gleich sind.
Sie können jede der folgenden Aktionen zur referenziellen Integrität separat für Aktualisierungen und Löschungen des Primärschlüssels angeben:
RESTRICT Erzeugt einen Fehler und verhindert die Änderung, wenn versucht wird, einen referenzierten Primärschlüssel zu ändern. Dies ist die Standardmaßnahme für referenzielle Integrität.
SET NULL Setzt alle Fremdschlüssel, die sich auf den referenzierten Primärschlüssel beziehen, auf NULL.
SET DEFAULT Setzt alle Fremdschlüssel, die sich auf den geänderten Primärschlüssel beziehen, auf den Standardwert für die betreffende Spalte (wie in der Tabellendefinition angegeben).
CASCADE Im Zusammenhang mit ON UPDATE: Aktualisiert alle Fremdschlüssel, die sich auf den aktualisierten Primärschlüssel beziehen, auf den neuen Wert. Im Zusammenhang mit ON DELETE: Löscht alle Zeilen, die sich auf den gelöschten Primärschlüssel beziehen.
Systemtrigger implementieren Aktionen für die referenzielle Integrität. Der Trigger, der für die Primärtabelle definiert ist, wird mit den Berechtigungen des Eigentümers der sekundären Tabelle ausgeführt. Dieses Verhalten bedeutet, dass überlappende Vorgänge zwischen Tabellen mit unterschiedlichen Eigentümern stattfinden können, ohne dass zusätzliche Berechtigungen erteilt werden müssen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |