Trigger-abhängige Client Interaktionen (bezüglich Oracle8 i)
-
Upload
valentine-salazar -
Category
Documents
-
view
14 -
download
1
description
Transcript of Trigger-abhängige Client Interaktionen (bezüglich Oracle8 i)
Trigger-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
Inhalt
• 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
Der 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
Beispiel : 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
Stored 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
Beispiel : StoredProcedures & Functions
PROCEDURE Prozedurname IS
Variable1 Datentyp;
...
BEGIN
Anwendung1;
...
EXCEPTION
when ...
END Prozedurname;
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Vorteile 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
Anwendungsmö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
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Trigger 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 desSMTP-Protokolls
•Abstützen auf integrierte JServer API
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Trigger 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
Trigger in Javaverschiedene 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.2Praxis: 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 NetzwerkPraxis: DB-Account darf keine Socket-Verbindung herstellen(Admin??)
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Trigger in C
Funktionen liegen auf Datenbank-Server, aber nicht imAdressraum 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 DLL‘s verpackt)
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Und nun
als praktisches Beispiel
Mail-Benachrichtigung
per Trigger
„Trigger-abhängige Client Interaktionen“ von Mariusz Kukulski und Sven Bittner
Die 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