Hi,
die Tabelle opc_data:
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
| nummer | ip | z22 | h1 | h2 | c | v76 | v78 | v88 | stamp | zyklus | status |
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
| 8 | 192.168.1.71 | 0 | 70 | 44 | 105 | 714 | 682 | 672 | 2016-03-08 15:56:37 | 219 | 1 |
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
wird von folgendem Trigger beobachtet:
DELIMITER //
CREATE TRIGGER `testserver`.`opc_parameter_log` AFTER UPDATE ON `testserver`.`opc_data`
FOR EACH ROW
BEGIN
IF NEW.status != OLD.status THEN
INSERT INTO opc_log (stempel,nummer,status) VALUES (NOW(),NEW.nummer,NEW.status);
END IF;
IF NEW.z22 != OLD.z22 THEN
INSERT INTO opc_log (stempel,nummer,z22) VALUES (NOW(),NEW.nummer,NEW.z22);
END IF;
IF NEW.h1 != OLD.h1 THEN
INSERT INTO opc_log (stempel,nummer,h1) VALUES (NOW(),NEW.nummer,NEW.h1);
END IF;
IF NEW.h2 != OLD.h2 THEN
INSERT INTO opc_log (stempel,nummer,h2) VALUES (NOW(),NEW.nummer,NEW.h2);
END IF;
IF NEW.c != OLD.c THEN
INSERT INTO opc_log (stempel,nummer,c) VALUES (NOW(),NEW.nummer,NEW.c);
END IF;
END
//
DELIMITER ;
und schreibt bei einer Veränderung der Tabelle opc_data (UPDATE) den veränderten Wert in die Tabelle opc_log. Das funktioniert solange nur ein Wert in der Tabelle opc_data per UPDATE geändert wird. Werden zwei Werte (z.B. "status" und "h2" geändert), wird vom Trigger nur h2 in opc_log geschrieben.
Wie kann ich es im Trigger ermöglichen, dass alle geänderten Werte in opc_log geschrieben werden?
lg
Frank
die Tabelle opc_data:
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
| nummer | ip | z22 | h1 | h2 | c | v76 | v78 | v88 | stamp | zyklus | status |
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
| 8 | 192.168.1.71 | 0 | 70 | 44 | 105 | 714 | 682 | 672 | 2016-03-08 15:56:37 | 219 | 1 |
+--------+----------------+-----+----+----+-----+-----+-----+-----+---------------------+--------+--------+
wird von folgendem Trigger beobachtet:
DELIMITER //
CREATE TRIGGER `testserver`.`opc_parameter_log` AFTER UPDATE ON `testserver`.`opc_data`
FOR EACH ROW
BEGIN
IF NEW.status != OLD.status THEN
INSERT INTO opc_log (stempel,nummer,status) VALUES (NOW(),NEW.nummer,NEW.status);
END IF;
IF NEW.z22 != OLD.z22 THEN
INSERT INTO opc_log (stempel,nummer,z22) VALUES (NOW(),NEW.nummer,NEW.z22);
END IF;
IF NEW.h1 != OLD.h1 THEN
INSERT INTO opc_log (stempel,nummer,h1) VALUES (NOW(),NEW.nummer,NEW.h1);
END IF;
IF NEW.h2 != OLD.h2 THEN
INSERT INTO opc_log (stempel,nummer,h2) VALUES (NOW(),NEW.nummer,NEW.h2);
END IF;
IF NEW.c != OLD.c THEN
INSERT INTO opc_log (stempel,nummer,c) VALUES (NOW(),NEW.nummer,NEW.c);
END IF;
END
//
DELIMITER ;
und schreibt bei einer Veränderung der Tabelle opc_data (UPDATE) den veränderten Wert in die Tabelle opc_log. Das funktioniert solange nur ein Wert in der Tabelle opc_data per UPDATE geändert wird. Werden zwei Werte (z.B. "status" und "h2" geändert), wird vom Trigger nur h2 in opc_log geschrieben.
Wie kann ich es im Trigger ermöglichen, dass alle geänderten Werte in opc_log geschrieben werden?
lg
Frank