Naps: Änderungen speichern

Beitrag lesen

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