Database Reference
In-Depth Information
dies nicht schon bei der Implementation der Datenbasis erfol-
gen konnte.
Die Programmierung von Triggern in ORACLE soll nun Anhand
von drei Beispielen erläutert werden:
A) Kursdaten anzeigen für jeden neuen Wert im Feld „KNr“
der Maske „Kursbesuche“.
B) Implementierung der 1-mc-Beziehung zwischen den Ta-
bellen „Kurse“ und „Kursbesuche“ beim Löschen eines Da-
tensatzes aus der Tabelle „Kurse“.
C) Implementierung der m-1-Beziehung zwischen den Tabel-
len „Personen“ und „Funktionen“ beim Einfügen eines Da-
tensatzes in die Tabelle „Personen“.
Für Beispiel A muss für das Feld „KNr“ ein „Post-Change“-
Trigger gesetzt werden. Dieser Trigger wird aktiv, sobald im
Feld „KNr“ der Wert geändert wird. In diesem Falle muss der
SQL-Befehl gemäß Bild 4.22 ablaufen.
Bild 4.22:
Dynamischer
Wertebereich
für Fremd-
schlüsselattri-
bute testen
SELECT Kursbezeichnung, Themengebiet
INTO {Maskenfelder}
FROM Kurse, Kursthemen
WHERE Kurse.TNr=Kursthemen.TNr
AND Kurse.KNr={Feld „KNr“};
Mit {Maskenfelder} sind die Feldnamen in der Benutzermaske
gemeint. Diese können beliebig gewählt werden. „INTO“ ist
kein Standardbezeichner, sondern wird bei ORACLE verwen-
det, um die Werte der SELECT-Anweisung in die Maskenfelder
zu kopieren. Unter {Feld „KNr“} ist die Bezeichnung des Feldes
„KNr“ in der Benutzermaske zu verstehen. Mit diesem Trigger
wird gleichzeitig die referentielle Integrität gewährleistet.
Der Trigger findet nämlich nur dann einen Datensatz in der
Tabelle „Kurse“, wenn der Fremdschlüsselwert im Feld „KNr“
zum dynamischen Wertebereich des ID-Schlüssels „KNr“ ge-
hört. Andernfalls meldet er einen Fehler.
Bei Beispiel B muss wegen der 1-mc-Beziehung sichergestellt
werden, dass beim Löschen eines Kurses alle assoziierten Da-
tensätze in der Tabelle „Kursbesuche“ ebenfalls gelöscht wer-
den. Die 1-Assoziation verlangt ja, dass für jeden Datensatz der
Tabelle „Kursbesuche“ genau ein Datensatz in der Tabelle
Search WWH ::




Custom Search