Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar acionadores para adicionar os eventos de alteração nas tabelas de log de auditoria


Eu posso fornecer a você um tipo de algoritmo para trabalhar, a maior parte do trabalho básico já está feito:

Esta pode ser sua tabela de auditoria, deve adicionar coluna de carimbo de data/hora como data de modificação ou mais informações de acordo com seus requisitos:
CREATE TABLE audit (
     old_data VARCHAR(100),
     new_data VARCHAR(100),
     tbl_name VARCHAR(100)
)
|

Isso pode ser usado como um gatilho de referência; observe que haverá um gatilho separado para cada tabela:
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;
|

Você pode ter várias instruções de inserção, uma para cada coluna. Se você quiser colocar uma restrição de não inserir os dados que não forem alterados você pode fazer a seguinte alteração na trigger:
IF(OLD.column_name <> NEW.column_name) THEN
    --Your insert query here
ELSE
    --NOOP
END IF;

Informe se forem necessárias mais informações.