Hallo,
diese Frage richtet sich an Leute mit Wissen über "Trigger" in
Datenbanken (hier die Oracle-Datenbank).
Die Eingabe des folgenden Triggers wird von der Oracle-Datenbank
mit einem Komplilierungs-Fehler quittiert - der Trigger wird
angelegt aber funktioniert nicht.
Der Fehler muß in den letzten 8 Zeilen des Triggers (ab dem
SELECT) liegen.
Vielleicht findet einer von Euch den Fehler.
Hinweis zum Verständnis:
Die Tabelle "sportlerin" enthält nur das Attribut "vereinsbeitrag"
und einen Fremdschlüssel "s_id", der auf den Primärschlüssel "m_id"
der Tabelle "mitglied" zeigt (in der alle übrigen Attribute einer
Sportlerin zu finden sind).
Hier der Trigger:
/*
* Trigger, der dafür sorgt, daß beim Einfügen von volljährigen SportlerInnen
* in die Tabelle "Sportlerin", der Vereinsbeitrag auf 20 Euro erhöht
* wird (Hinweis: SportlerInnen unter 18 zahlen nur 10 Euro).
*/
CREATE OR REPLACE TRIGGER beitrag
AFTER INSERT OR UPDATE ON sportlerin
FOR EACH ROW
DECLARE
geburt DATE;
BEGIN
SELECT m.geburtsdatum INTO geburt FROM mitglied m WHERE :new.s_id = m.m_id;
IF (MONTHS_BETWEEN(SYSDATE, geburt)/12>=18)
THEN
IF INSERTING OR UPDATING
THEN
UPDATE sportlerin SET vereinsbeitrag=20 WHERE s_id = :new.s_id;
END IF;
END;
/