Thema - bei der LISt Gesellschaft für Verkehrswesen und ...
Thema - bei der LISt Gesellschaft für Verkehrswesen und ...
Thema - bei der LISt Gesellschaft für Verkehrswesen und ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
5. Teilweiser Aufbau einer prototypischen GDI<br />
Die Aufgabe des ersten Triggers ist es, alle Datenbankoperationen (Insert, Update,<br />
Delete) auf dem View zu ermöglichen. Dies erfolgt durch die Implementierung eines<br />
Instead – of Triggers <strong>für</strong> jede dieser Operationen. Durch den in Abbildung 10<br />
dargestellten Instead of Trigger können Einträge im View geän<strong>der</strong>t werden.<br />
CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFU<br />
INSTEAD OF UPDATE ON Datentabelle_View"<br />
BEGIN<br />
END;<br />
CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFD<br />
INSTEAD OF DELETE ON Datentabelle_View"<br />
BEGIN<br />
END;<br />
UPDATE Datentabelle<br />
SET<br />
"Spalte 1" = :new. "Spalte 1"<br />
"Spalte 2" = :new. "Spalte 2"<br />
…<br />
WHERE "ID" = :old."ID";<br />
Abbildung 10: Instead of Update Trigger des zentralen Views<br />
Der Primärschlüssel <strong>der</strong> Tabelle (in Abbildung 10 „ID“ genannt) dient hier<strong>bei</strong> als<br />
Referenz <strong>und</strong> kann nicht geän<strong>der</strong>t werden. Sollte eine Än<strong>der</strong>ung des Primärschlüssels<br />
notwendig sein, muss <strong>der</strong> entsprechende Datensatz gelöscht <strong>und</strong> neu angelegt werden.<br />
Um die Operation „delete“ (löschen) auf dem View zu ermöglichen, muss ein weiterer<br />
Trigger erstellt werden. Dieser soll neben <strong>der</strong> Löschung des Eintrages aus <strong>der</strong><br />
Datentabelle ebenfalls die entsprechenden Einträge aus <strong>der</strong> Tabelle Nutzer_Daten <strong>für</strong><br />
diesen Datensatz löschen. Ein möglicher Trigger ist in Abbildung 11 dargestellt.<br />
DELETE FROM Datentabelle WHERE "ID" = :old."ID";<br />
DELETE FROM Nutzer_Daten WHERE "Daten_ID" = :old."ID";<br />
Abbildung 11: Instead of Delete Trigger des zentralen Views<br />
37