Databases Reference
In-Depth Information
Als Ereignisse stehen alle möglichen Änderungen der Tabellen
zur Verfügung, die mit INSERT, UPDATE und DELETE bear-
beitet werden. Die Aktionen bestehen grundsätzlich aus
PL/SQL-Programmen. Die generelle Form von Triggern sieht
wie folgt aus.
CREATE
[
OR REPLACE
]
TRIGGER
<Triggername>
{
BEFORE
|
AFTER
}
{
INSERT
|
DELETE
|
UPDATE
} [
OF
{Spaltenliste}]
[
OR
{
INSERT
|
DELETE
|
UPDATE
} [
OF
{Spaltenliste}]]
...
[
OR
{
INSERT
|
DELETE
|
UPDATE
} [
OF
{Spaltenliste}]]
ON
<Tabellenname>
[
FOR EACH ROW
]
[
WHEN
<Bedingung>]
<PL/SQL-Block>
;
Dabei stehen in geschweiften Klammern stehende, mit senk-
rechten Strichen abtrennte Teile für Alternativen, von denen ei-
ne gewählt werden muss.
Die gesamten Alternativen werden anhand von Beispielen dis-
kutiert. Eine typische Aufgabe von Triggern ist es, Änderungen
in der Datenbank zu protokollieren. Dazu wird jetzt eine einfa-
che Tabelle zur Protokollierung genutzt, die festhält, wer wel-
ches Tier in das System eingetragen hat. Zur Feststellung des
Ausführenden des INSERT-Befehls wird die Systeminformation
USERNAME in der Systemtabelle USER_USERS genutzt. Die
Protokolltabelle soll folgende Form haben.
Defintion von
Triggern
CREATE TABLE Zooprotokoll(
nr INT,
wann DATE,
wer VARCHAR(255),
gehege INTEGER,
tiername VARCHAR(12),
PRIMARY KEY(nr)
);
Die Nummerierung der Einträge soll automatisch erfolgen. Zu
diesem Zweck kann man sogenannte Sequenzzähler in Oracle
definieren, ihre Syntax ist wie folgt.
CREATE SEQUENCE
<Sequenzname>
INCREMENT BY
<inc>
START WITH
<start>
;
automatische
Zählvariable
269