Deutsches Application Express Forum (ApEx) -- Installation , Engine / SQL , Anwendungen
HTMLDB Engine :  Oracle Apex The fastest message board... ever.
Alles in HTMLDB, Applikationen, Berichte, SQL ... 
Trigger zum Abfangen von Datumsdaten
geschrieben von: Pat91 (---.pools.arcor-ip.net)
Datum:

Hallo zusammen,

Ich habe mal wieder eine Frage.

Folgender Sachverhalt:
Wir bauen momentan an einem Intranet, mit dessen Hilfe Mitarbeiter auch unter anderem Krankmeldungen/Urlaubsanträge erstellen können, welche dann später entweder genehmigt oder zurückgewiesen werden können. Nun ist es meine Aufgabe einen Trigger zu schreiben, der beim bestätigen oder ablehnen überprüft, ob das angegebene Datum in der Vergangenheit liegt.
Da ich noch am Anfang meiner Karriere stehe ist dies mein erster Trigger den ich überhaupt selber schreibe ;-). Dabei gehe ich in kleinen Testschritten vor. Ich habe daher zum Testen die Tabelle TEMP_TRIGGER_TEST angelegt, die bei erfolgreichem Durchlauf gefüllt wird.

Ich bin nun an dem Punkt wo die Datumswerte miteinander verglichen werden sollen. Hier habe ich das Problem, dass die Syntax des Triggers wohl zu stimmen scheint, ich aber beim ausführen die Fehlermeldung
"ORA-04091: table DEV_MIFO.ZE_KRANKMELDUNG is mutating, trigger/function may not see it ORA-06512: at "DEV_MIFO.ZE_KRANKMELDUNG_T1", line 6 ORA-04088: error during execution of trigger 'DEV_MIFO.ZE_KRANKMELDUNG_T1' (Row 1)"
bekomme.

Nun wäre meine Frage, wie ich das Problem lösen kann.

Ich bin dankbar für jeden Verbesserungsvorschlag!

Hier der aktuelle Code des Triggers.

create or replace trigger "ZE_KRANKMELDUNG_T1"
BEFORE
update of "GENEMIGT" on "ZE_KRANKMELDUNG" /*Die Spalte genemigt kann 3 werte haben N für "nicht bearbeitet" Y für genehmigt und Z für zurückgewiesen.*/
for each row
when (new.genemigt = 'Y') /*Endbenutzer will Antrag bestätigen*/
declare
v_datum date;
t_datum date;
begin
select sysdate into v_datum from dual;
select "DATUM" into t_datum from "ZE_KRANKMELDUNG" where "GENEMIGT"='N';
if (t_datum < v_datum)
then insert into TEMP_TRIGGER_TEST (NAME) values ('funktioniert'); /*Testzeile, mit der ich überprüfe ob der Trigger richtig arbeitet*/
end if;
end;


Viele Grüße

Patrick



Thema Neugierige geschrieben von geschrieben
Trigger zum Abfangen von Datumsdaten 3040 Pat91
Re: Trigger zum Abfangen von Datumsdaten 2027 mozart


In diesem Forum dürfen nur registrierte Benutzer schreiben.
This forum powered by Phorum.