sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear disparadores para agregar los eventos de cambio en las tablas del registro de auditoría

Puedo proporcionarle un tipo de algoritmo en el que trabajar, la mayor parte del trabajo preliminar ya está hecho:

Esta puede ser su tabla de auditoría, debe agregar la columna de marca de tiempo como fecha de modificación o más información según sus requisitos:

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

Esto se puede utilizar como disparador de referencia; tenga en cuenta que habrá un disparador separado para cada tabla:

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

Puede tener varias instrucciones de inserción, una para cada columna. Si desea poner una restricción de no insertar los datos que no se cambian, puede hacer el siguiente cambio en el disparador:

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

Infórmenos si se requiere más información.