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 ...
5. Teilweiser Aufbau einer prototypischen GDI Die Aufgabe des ersten Triggers ist es, alle Datenbankoperationen (Insert, Update, Delete) auf dem View zu ermöglichen. Dies erfolgt durch die Implementierung eines Instead – of Triggers für jede dieser Operationen. Durch den in Abbildung 10 dargestellten Instead of Trigger können Einträge im View geändert werden. CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFU INSTEAD OF UPDATE ON Datentabelle_View" BEGIN END; CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFD INSTEAD OF DELETE ON Datentabelle_View" BEGIN END; UPDATE Datentabelle SET "Spalte 1" = :new. "Spalte 1" "Spalte 2" = :new. "Spalte 2" … WHERE "ID" = :old."ID"; Abbildung 10: Instead of Update Trigger des zentralen Views Der Primärschlüssel der Tabelle (in Abbildung 10 „ID“ genannt) dient hierbei als Referenz und kann nicht geändert werden. Sollte eine Änderung des Primärschlüssels notwendig sein, muss der entsprechende Datensatz gelöscht und neu angelegt werden. Um die Operation „delete“ (löschen) auf dem View zu ermöglichen, muss ein weiterer Trigger erstellt werden. Dieser soll neben der Löschung des Eintrages aus der Datentabelle ebenfalls die entsprechenden Einträge aus der Tabelle Nutzer_Daten für diesen Datensatz löschen. Ein möglicher Trigger ist in Abbildung 11 dargestellt. DELETE FROM Datentabelle WHERE "ID" = :old."ID"; DELETE FROM Nutzer_Daten WHERE "Daten_ID" = :old."ID"; Abbildung 11: Instead of Delete Trigger des zentralen Views 37
5. Teilweiser Aufbau einer prototypischen GDI Ein weiterer Instead of Trigger wird für das Einfügen neuer Datensätze in den View benötigt. Zusätzlich muss dieser, sobald ein neuer Datensatz eingefügt wurde, einen entsprechenden Eintrag in der Nutzer_Daten Tabelle erzeugen. Durch diesen Eintrag erhält der Ersteller des Datensatzes die Schreibrechte an diesem. Des Weiteren erfolgt eine einfache Fehlerabfrage, so dass keine leeren Datensätze in den Datenbestand aufgenommen werden können. Dargestellt ist ein solcher Trigger in Abbildung 12. CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFI" INSTEAD OF INSERT ON Datentabelle_View BEGIN IF ( :new."Spalte 1" IS NOT NULL AND ) THEN ELSE vollständig'); END IF; :new."Spalte 2" IS NOT NULL AND… :new."GEOM" IS NOT NULL INSERT INTO Datentabelle(Spalte1, Spalte2 …, "GEOM", "ID") VALUES(:new.Spalte1, :new.Spalte2, …, :new."GEOM", SEQ_ID_Datentabelle.NEXTVAL); INSERT INTO Nutzer_Daten(Nutzer_ID, Daten_ID) VALUES((SELECT "ID" FROM Nutzer WHERE DBAnmeldename = (SELECT user FROM dual)), SEQ_ID_Datentabelle.CURRVAL); RAISE_APPLICATION_ERROR (-20101, 'Eingabe der Daten nicht Abbildung 12: Instead of Insert Trigger des zentralen Views Zuletzt ist ein Trigger für die Einhaltung der Schreibrechte erforderlich. Im Falle eines unerlaubten Schreibzugriffes soll eine entsprechende Fehlermeldung erfolgen und eine Manipulation der Daten verhindert werden. Zu diesem Zweck prüft der Trigger vor dem möglichen Schreibzugriff die vorhandenen Schreibrechte. Sind diese vorhanden, wird der Trigger ohne weitere Abarbeitung 38
- Seite 1 und 2: Thema: Diplomarbeit Konzeption eine
- Seite 3 und 4: Eigenständigkeitserklärung Hiermi
- Seite 5 und 6: 4.3 Beschreibung des INSPIRE Komple
- Seite 7 und 8: Tabellenverzeichnis Tabelle 1: ESRI
- Seite 9 und 10: HTTP Hypertext Transfer Protocol IN
- Seite 11 und 12: 1. Einleitung Verwaltungs- und Funk
- Seite 13 und 14: 2. Grundlagen 2 Grundlagen 2.1 Defi
- Seite 15 und 16: 2. Grundlagen 2.3 INSPIRE Die Richt
- Seite 17 und 18: 2. Grundlagen 2.4 Webservices Nachf
- Seite 19 und 20: 2. Grundlagen Die Datenbasis bilden
- Seite 21 und 22: 2. Grundlagen 2.4.5 WCS Durch den E
- Seite 23 und 24: 3. Ausgangssituation in der LISt Gm
- Seite 25 und 26: 3. Ausgangssituation in der LISt Gm
- Seite 27 und 28: 3. Ausgangssituation in der LISt Gm
- Seite 29 und 30: 4. Konzept einer möglichen Geodate
- Seite 31 und 32: 4. Konzept einer möglichen Geodate
- Seite 33 und 34: 4. Konzept einer möglichen Geodate
- Seite 35 und 36: 4. Konzept einer möglichen Geodate
- Seite 37 und 38: 4. Konzept einer möglichen Geodate
- Seite 39 und 40: 4. Konzept einer möglichen Geodate
- Seite 41 und 42: 5. Teilweiser Aufbau einer prototyp
- Seite 43 und 44: 5. Teilweiser Aufbau einer prototyp
- Seite 45: 5. Teilweiser Aufbau einer prototyp
- Seite 49 und 50: 5. Teilweiser Aufbau einer prototyp
- Seite 51 und 52: 5. Teilweiser Aufbau einer prototyp
- Seite 53 und 54: 5. Teilweiser Aufbau einer prototyp
- Seite 55 und 56: 5. Teilweiser Aufbau einer prototyp
- Seite 57 und 58: 6. Zusammenfassung 6 Zusammenfassun
- Seite 59 und 60: 7. Ausblick Softwarelösungen exist
- Seite 61 und 62: Anhang Der Trigger zur Prüfung der
- Seite 63 und 64: Anhang Damit ist die Konfiguration
- Seite 65 und 66: Anhang layer="LAYERS=Sachsen_1,Sach
- Seite 67 und 68: Anhang sowie die erhaltenen Kartena
- Seite 69 und 70: Bibliographie Internet Zeitpunkt de
- Seite 71: Bibliographie [i12] Gesetz über da
5. Teilweiser Aufbau einer prototypischen GDI<br />
Ein weiterer Instead of Trigger wird <strong>für</strong> das Einfügen neuer Datensätze in den View<br />
benötigt. Zusätzlich muss dieser, sobald ein neuer Datensatz eingefügt wurde, einen<br />
entsprechenden Eintrag in <strong>der</strong> Nutzer_Daten Tabelle erzeugen. Durch diesen Eintrag<br />
erhält <strong>der</strong> Ersteller des Datensatzes die Schreibrechte an diesem. Des Weiteren erfolgt<br />
eine einfache Fehlerabfrage, so dass keine leeren Datensätze in den Datenbestand<br />
aufgenommen werden können.<br />
Dargestellt ist ein solcher Trigger in Abbildung 12.<br />
CREATE OR REPLACE TRIGGER Datentabelle_View_INSTOFI"<br />
INSTEAD OF INSERT ON Datentabelle_View<br />
BEGIN<br />
IF ( :new."Spalte 1" IS NOT NULL AND<br />
)<br />
THEN<br />
ELSE<br />
vollständig');<br />
END IF;<br />
:new."Spalte 2" IS NOT NULL AND…<br />
:new."GEOM" IS NOT NULL<br />
INSERT INTO Datentabelle(Spalte1, Spalte2 …, "GEOM", "ID")<br />
VALUES(:new.Spalte1, :new.Spalte2, …, :new."GEOM",<br />
SEQ_ID_Datentabelle.NEXTVAL);<br />
INSERT INTO Nutzer_Daten(Nutzer_ID, Daten_ID)<br />
VALUES((SELECT "ID" FROM Nutzer WHERE DBAnmeldename =<br />
(SELECT user FROM dual)), SEQ_ID_Datentabelle.CURRVAL);<br />
RAISE_APPLICATION_ERROR (-20101, 'Eingabe <strong>der</strong> Daten nicht<br />
Abbildung 12: Instead of Insert Trigger des zentralen Views<br />
Zuletzt ist ein Trigger <strong>für</strong> die Einhaltung <strong>der</strong> Schreibrechte erfor<strong>der</strong>lich. Im Falle eines<br />
unerlaubten Schreibzugriffes soll eine entsprechende Fehlermeldung erfolgen <strong>und</strong> eine<br />
Manipulation <strong>der</strong> Daten verhin<strong>der</strong>t werden.<br />
Zu diesem Zweck prüft <strong>der</strong> Trigger vor dem möglichen Schreibzugriff die vorhandenen<br />
Schreibrechte. Sind diese vorhanden, wird <strong>der</strong> Trigger ohne weitere Abar<strong>bei</strong>tung<br />
38