DB2 Trigger schreiben

Hallo zusammen,

ich versuche meine ersten Schritte in DB2 zu machen und habe mir einen kleinen Trigger ausgedacht, den ich auf meiner DB erstellen möchte. Allerdings habe ich so mein Problem mit der Syntax, hoffe ich doch zumindest. Was ist an dem Code falsch?

create trigger mytrigger
after insert on mytest
REFERENCING OLD AS o NEW AS n
FOR EACH ROW
BEGIN ATOMIC
IF (n.TRIGGER_FILL is null)
THEN set n.TRIGGER_FILL = 'Trigger filled’
END IF;
END

Ich bekomme beim ausführen des Codes die Fehlermeldung:

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=END;= ‚Trigger filled‘
;, DRIVER=3.62.80

Danke & Gruß
Michael

Hallo Michael,

du hast nur ein Semikolon vergessen, es muss heissen

THEN set n.TRIGGER_FILL = ‚Trigger filled‘;

Ein weiteres Problem wird deine REFERENCING Klausel sein,
AFTER INSERT kann es keinen OLD Satz geben …

Gruss,
SomeOne

Leider bekomme ich damit auch eine Fehlermeldung. :frowning:
Ich nutze das Prog SQuirreL SQL Client um mich auf die DB zu verbinden - könnte es sein, dass das Ding ein Problem hat??

Ich habe schon einen Trigger aus einem der IBM Doku ausprobiert, natürlich auf meine Tabelle leicht angepasst, aber das Ergebnis ist das Selbe.
http://www.ibm.com/developerworks/data/tutorials/dm0…

Jetzt habe ich die Syntax die funktioniert :smiley:

CREATE TRIGGER mytrigger
BEFORE INSERT ON mytest
REFERENCING NEW AS n
FOR EACH ROW
WHEN (n.trigger_fill = ‚‘)
SET n.trigger_fill = ‚Trigger filled‘

Hi Michael,

das hatte ich gestern beim Testen auch festgestellt dass du noch diverse andere Fehler in deiner Syntax hattest. Wollte es dir noch schreiben, bin dann aber abends nicht mehr dazu gekommen.

Aber du hast ja jetzt selbst erkannt , dass das was du machen wolltest AFTER INSERT keinen Sinn ergibt :smile: .

Weiterhin happy trigger ,
SomeOne