PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Oracle Trigger



Eiskalter_Engel
25-01-2005, 14:20
Hallo, ich habe ein Problem mit einem Oracle Trigger. Wenn beim Insert einer neuen Reihe das 27ste zeichen der Spalte messx die '2' ist, dann soll der Datensatz in einer anderen Tabelle gespeichert werden.

create or replace trigger testzh before insert on ausgangimplx for each row
begin
if substr( :NEW.messx, 27 ,1) = '2'
insert into ausgang2implx (actix, addrx, addsx, datex, jdoclassx, jdolockx, messx, ornox, ponox, priox, procx, statx, userx)
values (:NEW.actix, :NEW.addrx, :NEW.addsx, :NEW.datex, :NEW.jdoclassx, :NEW.jdolockx, :NEW.messx, :NEW.ornox, :NEW.ponox, :NEW.priox, :NEW.procx, :NEW.statx, :NEW.userx)
endif;
end testzh


Leider bekomme ich nur die Fehlermeldung
Trigger, procedure or function created with PL/SQL compilation error(s).
ohne genauere Hinweise. Kann mir jemand helfen?

Eiskalter_Engel
25-01-2005, 15:02
Der simple Trigger

create or replace trigger testzh after insert on ausgangimplx for each row
begin
insert into ausgang2implx (ornox, ponox) values ( :NEW.ornox, :NEW.ponox);
end testzh;

kann jedoch angelegt werden.

quinte17
25-01-2005, 17:03
liegts vielleicht an dem if clause?
dachte bei ada funktioniert des so:

if bla
begin

bin mir aber nicht sicher... hab schon länger jetzt keine trigger mehr unter oracle gemacht

quinte17
25-01-2005, 17:06
ich korrigiere ;)


if then

elseif then

else

end if

quelle: http://www.informatik.uni-freiburg.de/~dbis/lehre/db-prakt-sql-ss01/1306.pdf

Eiskalter_Engel
26-01-2005, 12:29
danke für die Hilfe. Ich habe den Fehler gefunden. Ich muß mit einem After Trigger arbeiten und kann anstand der If-Klausel im Begin-End-Block mit einer WHEN-Bedingung vor dem Beginn arbeiten. Dabei muss der ':' vor dem New allerdings wiederrum entfallen.