cancel
Showing results for 
Search instead for 
Did you mean: 

Trigger bei Neuanlage eines Datensatzes

1,094

Grüße Euch, wie müsste ein Trigger aussehen, der bei der Neuanlage eines Datensatzes ein Datum in der Tabelle mit dem Server - Datum füllt. Ich mache das bisher händisch aber es ist ein riesen Aufwand... VG Franz

[Translation] Greetings, what should a trigger look like that fills a date in the table with the server date when creating a new data record. I've been doing this manually so far, but it's a huge effort

View Entire Topic
0 Kudos

Hallo zusammen, habe den folgenden Trigger angelegt um ein Datum zu updaten. Der Trigger wird aber nicht ausgeführt. Muss irgend etwas aktiviert werden? VG Franz Stampflmeier

ALTER TRIGGER "Datum Angelegt" AFTER UPDATE OF "ANGELEGT" ORDER 1 ON "dba"."Trexo_Kostentraeger" FOR EACH STATEMENT BEGIN SET Angelegt = Getdate() END

VolkerBarth
Contributor
0 Kudos

Dieser AFTER UPDATE OF Trigger wird genau dann aktiviert, nachdem ein Update erfolgt ist, das den Wert von "Angelegt" tatsächlich geändert hat. Es müsste also ein UPDATE... SET ANGELEGT = <irgendein datum="">... der Auslöser sein.

Was Du dagegen haben möchtest, ist ein BEFORE UPDATE Trigger, der den Wert direkt setzt.

Außerdem ist die Syntax für einen Statement-Level-Trigger falsch, hier müsstest Du über einen Join mit inserted erstmal die betroffenen Datensätze selektieren.

0 Kudos

... ich habe jetzt nach BEFORE UPDATE geändert, es tut sich trotzdem nichts. Frage: ist an der Stelle ein (neuer) Datensatz im Zugriff?

ALTER TRIGGER "Angelegt_Datum" BEFORE UPDATE OF "ANGELEGT" ORDER 1 ON "dba"."Trexo_Kostentraeger" FOR EACH ROW BEGIN Set Angelegt = Getdate() END

VolkerBarth
Contributor
0 Kudos

Mach einen normalen UPDATE-Trigger ohne Angabe der Spalte ((also ohne "OF Angelegt") daraus, Du möchtest ja nicht, dass der Trigger nur auslöst, wenn die Spalte Angelegt geändert wurde, sondern wenn allgemein ein Update beim Datensatz erfolgt ist. Und Du musst via REFERENCING-Klausel festlegen, mit welchem Alias Du auf den aktualisierten Datensatz zugreifen möchtest, vgl. Das Beispiel aus der Hilfe:

CREATE TRIGGER TR_update_date 
   BEFORE INSERT, UPDATE
     ON GROUPO.SalesOrderItems
   REFERENCING NEW AS new_row
FOR EACH ROW 
BEGIN
   SET new_row.ShipDate = CURRENT TIMESTAMP;
END;
0 Kudos

Ok, vielen Dank! Werde ich gleich ausprobieren...