Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer des déclencheurs pour ajouter les événements de modification dans les tables du journal d'audit

Je peux vous fournir une sorte d'algorithme sur lequel travailler, la plupart du travail de base est déjà fait :

Cela peut être votre table d'audit, devrait ajouter une colonne d'horodatage comme date de modification ou plus d'informations selon vos besoins :

CREATE TABLE audit (
     old_data VARCHAR(100),
     new_data VARCHAR(100),
     tbl_name VARCHAR(100)
)
|

Cela peut être utilisé comme déclencheur de référence ; notez qu'il y aura un déclencheur séparé pour chaque table :

CREATE TRIGGER testtrigger BEFORE UPDATE ON <table_name>
  FOR EACH ROW BEGIN
    INSERT INTO audit(old_data, new_data, tbl_name) VALUES (OLD.first_name, NEW.first_name, "testtable");
  END;
|

Vous pouvez avoir plusieurs instructions d'insertion, une pour chaque colonne. Si vous souhaitez mettre une restriction de ne pas insérer les données qui ne sont pas modifiées, vous pouvez effectuer la modification suivante dans le déclencheur :

IF(OLD.column_name <> NEW.column_name) THEN
    --Your insert query here
ELSE
    --NOOP
END IF;

Faites savoir si plus d'informations sont nécessaires.