die geänderte Datensatz durch Trigger aktualliseren

jetwork

Fleissiger Benutzer
Beiträge
97
Hallo Zusammen,


ich möchte für jeden Rekord in meiner Tabelle die letzte Änderung protokollieren, deswegen habe ich 2 Spalten eingeführt. Die spalten sind last_edited und last_editor.
Wenn jemand in der Record etwas ändert möchte ich in diese Record diese beide Spalten aktuallisieren.

Ich habe den folgenden Trigger vorbereitet. Wie kann ich das richtig schreiben?
Code:
CREATE TRIGGER triggername AFTER UPDATE ON tablename
FOR EACH ROW
BEGIN
IF ??????   THEN
  UPDATE TABLE tablename
  SET last_edited=NOW(), last_editor=CURRENT_USER()  
  WHERE ??????
END IF
END;

Danke im Voraus
 
Werbung:
Hallo Zusammen,


ich möchte für jeden Rekord in meiner Tabelle die letzte Änderung protokollieren, deswegen habe ich 2 Spalten eingeführt. Die spalten sind last_edited und last_editor.
Wenn jemand in der Record etwas ändert möchte ich in diese Record diese beide Spalten aktuallisieren.

Ich habe den folgenden Trigger vorbereitet. Wie kann ich das richtig schreiben?
Code:
CREATE TRIGGER triggername AFTER UPDATE ON tablename
FOR EACH ROW
BEGIN
IF ??????   THEN
  UPDATE TABLE tablename
  SET last_edited=NOW(), last_editor=CURRENT_USER() 
  WHERE ??????
END IF
END;

Danke im Voraus


Ich nix MySQL, aber in PG würde das in einer endlosen Rekusion enden. Rekusion? siehe Rekursion! (okay, den konnt ich mir nicht verkneifen)

Also, ich würde da in einem Before-Trigger an new.<SPALTE> arbeiten, nicht nochmals ein UPDATE im TRIGGER aufrufen. Weil: siehe oben, Rekursion und so...
 
Werbung:
Du brauchst einen BEFORE UPDATE-Trigger... Sonst gibt es eine Endlosschleife :)
In Oracle ginge es so:

Code:
CREATE TRIGGER temp_tab_bu BEFORE UPDATE ON temp_tab
FOR EACH ROW
BEGIN
   :new.last_edited := systimestamp;
   :new.las_editor  := user;
END;
 
Zurück
Oben