Trigger Auditoria Web
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 ??
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 ??
Mariam
Curtidas 0
Melhor post
William
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.
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.
GOSTEI 1
Mais Respostas
Alan Mario
23/02/2015
Não sei muito sobre o Postgre, apenas o arroz com feijão mesmo, hehehe.
Eu achei os seguintes materiais.
[url]https://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]
Eu achei os seguintes materiais.
[url]https://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]
GOSTEI 0
Mariam
23/02/2015
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 ...
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 ...
GOSTEI 0
William
23/02/2015
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.
GOSTEI 0
Mariam
23/02/2015
Isso mesmo, agora tenho outra duvida. tem um jeito para capturar os dados modificados que não seja por trigger ..?
GOSTEI 0
Mariam
23/02/2015
Isso mesmo, agora tenho outra duvida. tem um jeito para capturar os dados modificados que não seja por trigger ..?
GOSTEI 0
William
23/02/2015
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.
GOSTEI 0
Mariam
23/02/2015
Obrigada ! pelas respostas , já consegui fazer :D!!!
GOSTEI 0
Thiago Santana
23/02/2015
Legal!
Se possível posta a solução, assim a galera que necessitar já terá o conteúdo disponível!
Se possível posta a solução, assim a galera que necessitar já terá o conteúdo disponível!
GOSTEI 0