none
Ajuda com Trigguer ou Procedure de LOG RRS feed

  • Pergunta

  • BOA TARDE, TUDO BEM?

    Estou com um problema e precisaria de uma ajuda, de quem é mais experiente.

    Tenho uma unica tabela que faço todas as modificações, tenho uma segunda tabela que é igualzinha a primeira, só que ela contem o LOG da primeira tabela, guardando o registro ANTES dele ser modificado na tabela (ou seja como um LOG de alterações).

    O que eu gostaria, é que sempre, quando qualquer registro da tabela for modificado (update) ou excluído (Delete) ou Inserido (Insert), o registro (todos os seus campos) fossem adicionados na tabela de LOG, antes de fazer alteração na tabela.

    Exemplo:

    tabela A: Id_TabelaA, Nome2, Endereco2

    Tabela LOG_A: ID_Log, TipoLog, ID_TabelaA, Nome2, Endereco2 

    Qualquer delete (por exemplo) na tabela A, enviasse para a tabela LOG_A o TipoLog (no caso, viria como DELETE) + o registro antes da alteração (ID_TabelaA, Nome2, Endereco2) na tabela A.

    Isso seria possível via Procedure ou Trigguer?



    quarta-feira, 8 de outubro de 2014 21:40

Respostas

  • Paulo,

    Sim, como você deseja que isso seja feito antes de armazenar o dado na tabela, o mais indicado seria utilizar o Trigger do Tipo Instead Of.

    O importante para este caso é ter em mente que você estará disparando mais uma transação em paralelo com a transação que esta sendo processado durante a manipulação de dados, o que deve fazer que você analise bem esta implementação para não gerar custo de processamento.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 8 de outubro de 2014 23:42
  • Boa noite Paulo,

    Esse artigo explica justamente o que você está perguntando.

    http://smcode.com.br/monitoramentoDados.aspx

    É feita uma trigger que atua na atualização dos dados da tabela, gravando o registro antes da alteração e depois da alteração em uma tabela de log.

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    quarta-feira, 8 de outubro de 2014 23:48

Todas as Respostas

  • Paulo,

    Sim, como você deseja que isso seja feito antes de armazenar o dado na tabela, o mais indicado seria utilizar o Trigger do Tipo Instead Of.

    O importante para este caso é ter em mente que você estará disparando mais uma transação em paralelo com a transação que esta sendo processado durante a manipulação de dados, o que deve fazer que você analise bem esta implementação para não gerar custo de processamento.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    quarta-feira, 8 de outubro de 2014 23:42
  • Boa noite Paulo,

    Esse artigo explica justamente o que você está perguntando.

    http://smcode.com.br/monitoramentoDados.aspx

    É feita uma trigger que atua na atualização dos dados da tabela, gravando o registro antes da alteração e depois da alteração em uma tabela de log.

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    quarta-feira, 8 de outubro de 2014 23:48
  • Obrigado a Todos, pela dica!
    quinta-feira, 9 de outubro de 2014 22:23