Trigger Auditoria Web

23/02/2015

Ola Pessoal

Preciso uma ajudinha, Estou desenvolvendo um sistema web em php, ela tem varios formularios que são cadastrados pelos usuários, Então, agora o que eu preciso
fazer é um trigger de auditoria que permita capturar as modifcações que o usuario faz. Vocês tem alguma idea de como fazer ??

Melhor resposta

23/02/2015

Mariam, constantemente vejo colegas desenvolvendo sistemas com auditorias de ações executadas em bancos de dados através de triggers, principalmente com MySQL só que quando analisam as tabelas de auditoria todas as ações são executadas pelo mesmo usuário geralmente "root" ou outro usuário do banco de dados.

Isso porque não tem como você saber o usuário que está logado no sistema via trigger, porque na grande maioria das vezes tem um ou dois usuários criados no banco, mas no sistema existem vários usuários.

Então nessa situação existem 2 maneiras, ou você inseri via procedure ou executa os INSERTs na mão mesmo mas o disparo deverá ocorrer na aplicação sempre quer ocorrer uma operação de CRUD, assim você consegue gravar o usuário que está logado no momento.

Nos meus sistemas uso uma tabela de log com os seguintes campos:
ID
ID_USUARIO
ACAO_EXECUTADA
URL_ACESSADA
IP
DATA_HORA

Claro que podem ser acrescentados outros campos, mas apenas com esses campos já consegui me livrar de muita dor de cabeça com usuário reclamando de registro que some misteriosamente.

William (devwilliam)

Responder Citar

Outras Respostas

23/02/2015

Alan Mario

Não sei muito sobre o Postgre, apenas o arroz com feijão mesmo, hehehe.

Eu achei os seguintes materiais.

[url]http://www.devmedia.com.br/new-e-old-trigger-curso-postgresql-treinamento-de-banco-de-dados-parte-41/21768[/url]

[url]http://pgbr.postgresql.org.br/2013/slides/54.pdf[/url]
Responder Citar

23/02/2015

Mariam

Obrigada pela Resposta,

Eu já tinha feito um na mão mesmo, só que que cada vez tinha mais e mais formulários que auditar, então pensei em minimizar esforços mas... rsrsrs...
vejo que difícil fazer algo genérico por que aumentaria a complexidade ...
Responder Citar

23/02/2015

William (devwilliam)

Se for pensar em gravar o usuário logado naquele instante fica complicado mesmo, suponhamos que você deixe somente o usuário padrão do PostgreSQL habilitado no servidor, todos as ações serão executadas pelo usuário "postgres", então fica sem sentido uma tabela de auditoria desse jeito.
Responder Citar

23/02/2015

Mariam

Isso mesmo, agora tenho outra duvida. tem um jeito para capturar os dados modificados que não seja por trigger ..?
Responder Citar

23/02/2015

Mariam

Isso mesmo, agora tenho outra duvida. tem um jeito para capturar os dados modificados que não seja por trigger ..?
Responder Citar

23/02/2015

William (devwilliam)

O que foi alterado fica difícil, porque imagine uma tabela com 20 ou 30 campos seria impossível checar mudança campo por campo, eu gravo o Id do registro alterado.
Responder Citar

27/02/2015

Mariam

Obrigada ! pelas respostas , já consegui fazer :D!!!
Responder Citar

27/02/2015

Thiago Santana

Legal!
Se possível posta a solução, assim a galera que necessitar já terá o conteúdo disponível!
Responder Citar