Title: Trigger-abh
1Trigger-abhängige Client Interaktionen
(bezüglich Oracle8i)
- oder
- Was ein Trigger so alles anstoßen kann...
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
2Inhalt
- Der Trigger
- Strored Procedures Stored Functions
- Vorteile von Stored Procedures Functions
- Anwendungsmöglichkeiten
- Wie geht das denn genau??
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
3Der Trigger (der Auslöser)
- wird von der Datenbank ausgelöst, wenn mit einer
DML (database modifying language) Daten in der
Datenbank verändert werden - kann mit dem CALL-Befehl eine Stored Procedure
oder eine Stored Function auslösen - ist die Taste mit nahezu unbegrenzten
Möglichkeiten
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
4Beispiel Trigger
- CREATE TRIGGER Triggername
- AFTER UPDATE OF Spalte ON Tabellenname
- FOR EACH ROW
- BEGIN
- Anweisung1
- ...
- END
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
5Stored Procedures Stored Functions
- sind lokal in der Datenbank gespeichert
- Stored Procedures (für void Methoden)
- Stored Functions (für Methoden mit Rückgabewert)
- Aufrufen von Stored Procedures Functions
- SQL DML-Befehlen ( INSERT, UPDATE, DELETE und
SELECT) - SQL CALL-Befehl
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
6Beispiel StoredProcedures Functions
- PROCEDURE Prozedurname IS
- Variable1 Datentyp
- ...
- BEGIN
- Anwendung1
- ...
- EXCEPTION
- when ...
- END Prozedurname
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
7Vorteile von StoredProcedures Functions
- hohe Geschwindigkeit
- bereits kompilierter Code serverseitig ausgeführt
- einfache Einbindung von Methoden (Java, C)
- systemunabhängig und vielnutzerfähig
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
8Anwendungsmöglichkeiten
- Als Reaktion auf Datenbank-Veränderungen kann
über Trigger alles, was auch mit Stored
Procedures Functions möglich ist, ausgeführt
werden. - Mail-Benachrichtigungen
- Ausführung von Prozeßketten ( -folgen)
- Automatisierung von Verwaltungsprozessen
- ...noch Ideen?
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
9Trigger in PL/SQL
- Nutzen der mitgelieferten packages
- utl_http - Verbindung mit HTTP-Server per
HTTP-Protokoll - utl_tcp - Kommunikation per TCP/IP Protokoll
- utl_smtp - Senden von E-Mail
- Beispiel utl_smtp
- Sehr unkomfortabel, da Kommunikation auf niederer
Ebene des - SMTP-Protokolls
- Abstützen auf integrierte JServer API
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
10Trigger in PL/SQL(2)
Beispiel-Prozedur CREATE OR REPLACE PROCEDURE
sendMail ( Parameter ) IS mail_conn
utl_smtp.connection BEGIN mail_conn
utl_smtp.open_connection( mailhost )
utl_smtp.helo(mail_conn, mailhost)
utl_smtp.mail(mail_conn, sender)
utl_smtp.rcpt(mail_conn, recipient)
utl_smtp.data(mail_conn, message) - Nachricht
gemäß RFC821 utl_smtp.close_data(mail_conn)
utl_smtp.quit(mail_conn) END
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
11Trigger in Java
- verschiedene Möglichkeiten
- Hochladen der gesamten Applikation in den
Oracle-Server - Vermeidung der Netzzugriffe auf die DB
- leichtes Kopieren in andere DB
- Änderungen auf Server leicht zu handhaben
- - eventuelles Laden von ganzen Bibliotheken in
die DB - - Oracle8i unterstützt Java1.2
- Praxis hochladen der JavaMail, JB Activation
Framework und - Teilen der 1.3 JDK sprengen genutzen DB-Account
- Anstoßen eines Prozesses auf einem anderen Server
(zB per Socket) - Applikation kann komplett auf Server laufen und
dessen Fkt. nutzen - - Performanceverlust des auslösenden Ereignisses
- durch Kommunikation über Netzwerk
- Praxis DB-Account darf keine Socket-Verbindung
herstellen(Admin??)
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
12Trigger in C
- Funktionen liegen auf Datenbank-Server, aber
nicht im - Adressraum der DB
- Nutzung der Funktionalität und Geschwindigkeit
von C - Nutzen anderer Sprachen (Assembler, C etc)
- - Zeitverlust durch Ausführen ausserhalb der DB
- - Zeitverlust durch eventuelles Laden
Funktionen - (sind in DLLs verpackt)
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
13Und nunals praktisches BeispielMail-Benachrich
tigungper Trigger
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner
14Die Tabelle CREATE OR REPLACE TABLE
trigger_test ( rec VARCHAR2(100) NOT
NULL, text VARCHAR2(100) NOT NULL ) Der
Trigger CREATE OR REPLACE TRIGGER test_trig1
AFTER INSERT ON trigger_test FOR EACH ROW
CALL send_Mail(new.rec, new.text) Das
Resultat Eine Email mit dem eingetragenen Text
an den eingetragenen Empfänger
Trigger-abhängige Client Interaktionen von
Mariusz Kukulski und Sven Bittner