none
Ajuda com Trigger RRS feed

  • Pergunta

  • Fala pessoal tudo blz

    o cenário é o seguinte:

     

    Tenho uma tabela com vários campos.

    Preciso montar um trigger quando o campo X for atualizado para valor 0 ou 1 (é um status de um componente) ele disparar a trigger.

     

    Tem como montar um trigger de update apontando um campo específico?

     

    Abs

    segunda-feira, 2 de abril de 2007 16:34

Todas as Respostas

  • Boa tarde Thiago tem sim, basta utilizar a função update

     

     

    Create Trigger dbo.TR_AtualizaCampox ON SUATABELA For Update as

    Begin

       If UPDATE(CAMPOX)

          Begin

            If (Select CAMPOX From INSERTED) = 0

                Begin

                -- Procedimentos a serem executados caso o valor seja 0

                 end

             else

                Begin

                -- Procedimentos a serem executados caso o valor seja 1

                 end

          End

    end

     

     

     

    Espero ter ajudado

    segunda-feira, 2 de abril de 2007 20:44
  •  

     na verdade esse procedimento so funciona se tiver um update por vez se mandar um bloco vai ter problemas o ideal e colocar um join na inserted por exemplo

     

      Create Trigger TTT on  Tabela

      For Update

      As

      

        If Update(Campo)

     

           Update Tabela Set Campo = Case when CampoX = 0 then Valor Else OutroValor End

          From Tabela A inner join inserted on inserted.chave = A.Chave

     

     

    Abs;

    terça-feira, 3 de abril de 2007 10:03
  • Thiago,

     

    Sim, você pode montar, mas deixa eu entender, este processo de atualização será indiviual por registros, ou um bloco de registros serão alterados?

     

    Pois todo trigger quando disparado ele trabalha como se fosse um bloco de transações, por isso se você por atualizar 30 registros de uma só vez, você não conseguir definir um valor para cada linha.

     

    Você esta utilizando alguma aplicação?

     

    Dependendo da sua estrutura(número de registros que serão processados) é melhor fazer este procedimento direto na aplicação ao invés de criar um trigger para consumir mais recursos do banco.

     

    Seguindo os exemplos fornecidos pelo Marcelo e também o do Anderson, você pode ter uma base.

    terça-feira, 3 de abril de 2007 10:55