Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare Trigger per aggiungere gli eventi di modifica nelle tabelle del registro di controllo

Posso fornirti una sorta di algoritmo su cui lavorare, la maggior parte del lavoro di base è già stato fatto:

Questa può essere la tua tabella di controllo, dovrebbe aggiungere la colonna timestamp come data modificata o ulteriori informazioni secondo i tuoi requisiti:

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

Questo può essere utilizzato come trigger di riferimento; nota che ci sarà un trigger separato per ogni tabella:

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;
|

Puoi avere più istruzioni di inserimento una per ogni colonna. Se vuoi mettere una restrizione per non inserire i dati che non vengono modificati, puoi apportare le seguenti modifiche nel trigger:

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

Facci sapere se sono necessarie ulteriori informazioni.