Utilização de triggers para auditoria

14/10/2004

0

Fala pessoal blz ??

alguem tem exemplos de como utilizar triggers para auditoria ?? como por exemplo se um usuário alterar ou excluir dados de uma tabela, essa informação ser armazenada em uma tabela de auditoria.

Agradeço pela ajuda,


Felipe_cduarte

Felipe_cduarte

Responder

Posts

14/10/2004

Robertolucio

Oi Felipe,

Cara estou tentando isso tbém, mas por enquanto não consegui. Se descobrires algo, por favor retorna.

Att,
Roberto


Responder

14/10/2004

Marcus.magalhaes

Bom dia Felipe e Roberto.

Vc podem utilizar as tabelas [b:9e6dc1c5c4]inserted[/b:9e6dc1c5c4] e [b:9e6dc1c5c4]deleted[/b:9e6dc1c5c4] para isso.

Ex.:
Create Trigger trg_tabela On tabela for update, delete
As
Begin
Insert Into audit_table_deleted (codigo, desc)
Select codigo, desc
  From deleted

Insert Into audit_table_inserted (codigo, desc)
Select codigo, desc
  From inserted
End
GO


Onde [b:9e6dc1c5c4]deleted[/b:9e6dc1c5c4] é a tabela que armazena os dados que foram apagados e [b:9e6dc1c5c4]inserted[/b:9e6dc1c5c4] os que foram inseridos, no caso do update ele popula as 2 tabelas.

Att,


Responder

14/10/2004

Felipe_cduarte

Fala Marcus blz ???

po eu dei uma pesquisada sobre o inserted e o deleted e resolveu parcialmente meu problema hehehe .. eu preciso agora pegar o usuario q fez a alteração, só q nao posso utilizar o login do nt ( com a funcao system_user() ) pq nos sistemas da minha empresa utilizamos um controle de acesso ( q é um sistema desenvolvido aki tb ) ... nele temos as tabelas e controlamos o acesso aos módulos nas aplicações... estava pensando .. só se esse sistema na hora q cadastrar os usuários incluir no SQL Server um usuario (login via SQL ) tb.. vc acha viavel ??

[]´s


Responder

14/10/2004

Marcus.magalhaes

Oi Felipe.

O q vc pode fazer então é:

- Fazer com que o usuário se logue no sistema com um usuário válido no sql server;
- Armazenar este usuário em uma variável; e
- quando salvar os dados da inserted e da deleted, acrescentar a informação do usuário.

Eu também postei uma resposta para a Ligia (http://delphiforum.icft.com.br/forum/viewtopic.php?t=50984) sobre uma forma de fazer auditoria, capturando todos os comandos executados por todos os usuários. Dá uma olhada lá e vê se te atende.

Att,


Responder

15/10/2004

Felipe_cduarte

Fala Marcus blz ???

Acho q vamos ter q implementar isto nos sistemas mesmo... mas voltando ao assunto do usuario válido no sql, eu nao entendi esse armazenamento do usuario em uma variavel... se ele estiver cadastrado, com a função system_user() eu nao consigo pegar ele ??

minha trigger:

CREATE TRIGGER trg_teste
ON tab_clientes
for update
AS
BEGIN
insert into tab_clientes_audt ( ccliente, ncliente, cpfcliente, data, usuario )
select ccliente,
ncliente,
cpfcliente,
GETDATE(),
system_user
from deleted
END

+- isso né hehehe

[]´s





Responder

15/10/2004

Marcus.magalhaes

Bom dia Felipe.

Isso mesmo...tb dá.

Att,


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar