Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MARCOSOFTHARD

Log comando SQL

Recommended Posts

Olá amigos, alguém tem alguma procedure ou semelhante que funcione para gerar uma tabela de log?

 

Exemplo: Todo Select, update ou Delete que realizar nas Tabelas X, Y e Z

 

For armazenado na tabela P

 

Se tiver também de excluir os registros superiores a 30 dias seria melhor ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

 

O que você procura não seria uma Trigger?

 

Com ela você pode fazer isso. Se tiver dúvidas fico a disposição, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, como faço uma Trigger que é disparada sempre que a TABELA_X sofrer algum insert, delete ou update?

 

Queria uma coisa assim

 

Inicia Trigger

Comando SQL gravar na tabela Log junto com a Data e Hora

Fechar Trigger

 

Se tiver como fazer isso com qualquer tabela do banco de dados, sem precisar especificar seria o ideal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo,

 

Como assim qualquer tabela? Se você quiser que todas as tabelas guardem log tem que fazer a Trigger em todas. Por exemplo para uma tabela:

 

CREATE TRIGGER gravaLog 
AFTER INSERT ON tabelaX FOR EACH ROW 
BEGIN
   INSERT INTO log (colunas) VALUES (valores);
END;

CREATE TRIGGER gravaLog 
AFTER UPDATE ON tabelaX FOR EACH ROW 
BEGIN
   INSERT INTO log (colunas) VALUES (valores);
END;

CREATE TRIGGER gravaLog 
AFTER DELETE ON tabelaX FOR EACH ROW 
BEGIN
   INSERT INTO log (colunas) VALUES (valores);
END;

Aí você teria que criar em todas as tabelas que quer. Se forem muitas tabelas é fácil de criar um script em qualquer linguagem que monte os comandos SQL pra você, com os nomes de cada tabela e depois você só executa.

 

A disposição, abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal Diego pelo script, porém no MySQL como faço para pegar o comando SQL utilizado?

 

Por Exemplo.

 

 

CREATE TRIGGER gravaLog 
AFTER INSERT ON tabelaX FOR EACH ROW 
BEGIN
   INSERT INTO log (sql, data, hora) VALUES (sql, data, hora);
END;

 

Sendo que o SQL é o Insert que foi feito na tabelaX, quero armazenar tudo que foi feito no sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso pra pegar direto no banco acho que tu teria que ler o log do mesmo e pegar o último comando executado, algo assim. Nunca fiz disso não sei se dá...

 

Se tu quer armazenar o último comando seria melhor fazer via aplicação, que tu terá o comando ali no código. Se tu quer saber apenas o que foi feito (INSERT, UPDATE ou DELETE) coloque esses valores fixos dentro de cada Trigger. Por exemplo, a Trigger de INSERT grava um log com a palavra "INSERT" na coluna sql.

 

Sugestões.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.