Hi,
ich würde gerne bei bestimmten Datenbanken in mysql die Änderungen speichern.
Habe diese Lösung nach kurzer Suche gefunden:
Datenbank
CREATE TABLE `dummy` (
`dummy_id` int(11) NOT NULL AUTO_INCREMENT,
value int(11),
PRIMARY KEY (`dummy_id`)
) ENGINE=InnoDB;
Datenbank für Änderungen
CREATE TABLE dummy_log (
`log_id` int(11) NOT NULL AUTO_INCREMENT,
`dummy_id` int(11) NOT NULL,
old_value int(11),
new_value int(11),
action enum('insert','update','delete'),
dt datetime,
PRIMARY KEY (`log_id`)
) ENGINE=InnoDB;
Trigger
DELIMITER $$
CREATE TRIGGER trigger_dummy_insert AFTER INSERT ON dummy
FOR EACH ROW BEGIN
INSERT INTO dummy_log (dummy_id, new_value, action, dt) VALUES (NEW.dummy_id, NEW.value, 'insert', NOW() );
END;
$$
CREATE TRIGGER trigger_dummy_update AFTER UPDATE ON dummy
FOR EACH ROW
BEGIN
IF OLD.value != NEW.value THEN
INSERT INTO dummy_log (dummy_id, old_value, new_value, action, dt) VALUES (NEW.dummy_id, OLD.value, NEW.value, 'update', NOW() );
END IF;
END;
$$
CREATE TRIGGER trigger_dummy_delete AFTER DELETE ON dummy
FOR EACH ROW
BEGIN
INSERT INTO dummy_log (dummy_id, old_value, action, dt) VALUES (OLD.dummy_id, OLD.value, 'delete', NOW() );
END;
$$
DELIMITER ;
Ist es Sinnvoll es so zu lösen? Was ist aber wenn ich viele Spalten habe und es z.B. eine Änderungen in 3 Spalten gibt. Soll es dann in der "ÄnderungsDB" 3 Einträge geben?
Was ich am Schluss möchte ist einfach nur eine Art Logfile:
z.B.:
- Titel wurde um xxxx von xxx zu "Neuer Wert" geändert.
- Beschreibung wurde um xxx von xxx zu "Neuer Wert" geändert.
...
Danke!
MfG Naps