Criar log de update com trigger no mysql | Fórum | School of Net

Deseja poder participar de nosso fórum e tirar todas as suas dúvidas?
Clique aqui e assine nosso plano de acesso ilimitado. Saiba mais.

por Leonardo

3 semanas, 4 dias atrás Leonardo

Criar log de update com trigger no mysql

Bom dia, estou precisando criar um processo que gere um log quando algum campo for alterado, ai preciso salvar o usuário, o nome do campo alterado, o valor antigo e o valor novo, estou pensando em usar uma trigger para fazer isso, mas não queria criar uma trigger grande onde verifico cada campo com um if porque a tabela é muito grande, minha ideia e usar um cursor e pegar todos os campos e fazer um loop com eles e verificar se teve alguma alteração, mas como o nome do campo esta na variável cursor não sei como fazer a verificação com ele. Segue o exemplo de como estou tentando fazer. ``` BEGIN DECLARE campos varchar(255); DECLARE fimLoop int DEFAULT(0); DECLARE cursorCampo CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'infolog' AND TABLE_NAME = 'viagens'; DECLARE CONTINUE HANDLER FOR NOT FOUND SET fimLoop = 1; OPEN cursorCampo; WHILE (fimLoop != 1) DO FETCH cursorCampo INTO campos; IF (NEW.campos <> OLD.campos) THEN INSERT INTO log_update (usuario_responsavel,campo_alteracao,valor_antigo,valor_novo)VALUES ('infolog',campos,OLD.campos,NEW.campos); END IF; END WHILE; END ```