Auge: MySql Änderung bei Update

Beitrag lesen

Hallo

Bitte benutze die Buttons oberhalb des Eingabefelds, bei Quelltext insbesondere „</>“. Bei mir kam der Versuch, aus deiner Eingabe eine Formel zu machen, heraus.

Screenshot:

Formel statt Code

ich habe es nun mal wie folgt gelöst, allerdings gibt es noch ein Problem. Ich möchte, dass NUR geloggt wird, wenn es auch wirklich eine Änderung gab. Aktuell ist es so, dass er auch loggt, auch wenn sich nichts geändert hat.

Das hast du ja auch so angewiesen. Schreibe nach jedem UPDATE eine Zeile in die Logtabelle. Vergleiche stattdessen erst die alten mit den neuen Werten, speichere die Tatsache, dass es eine Änderung gab in eine Variable und erzeuge den Eintrag nur dann, wenn die Variable es hergibt, es also tatsächlichen eine Änderung gab.

Für die anderen Leser noch einmal dein Trigger (unverändert) in und mit Codeformatierung.

DROP TRIGGER IF EXISTS auftrag_after_update;
DELIMITER $$
CREATE TRIGGER auftrag_after_update
AFTER UPDATE ON auftrag
FOR EACH ROW
BEGIN
 INSERT INTO shop_logtable
   ( tabelle, tabelle_id, value, user )
 VALUES
   (   
   "auftrag",
   NEW.auftragnr,
   CONCAT(
   "UPDATE ",
	 if( NEW.re_adr = OLD.re_adr, "", CONCAT( "re_adr=", "'", CAST( NEW.re_adr AS CHAR ), "'," ) ),
     if( NEW.li_adr = OLD.li_adr, "", CONCAT( "li_adr=", CAST( NEW.li_adr AS CHAR ), "," ) ),
   ),
   NEW.user
   );
END $$
DELIMITER ;

Tschö, Auge

--
Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
Jan Koum, Mitgründer von WhatsApp, im Heise.de-Interview