Trigger executar para todos os registros de um UPDATE

24/06/2006

0

Estou executando um update da seguinte forma:

update clientes set estado = ´SP´
where estado = ´sp´


Mas essa tabela contem um triggers que grava um log.
E eu qeria qe isso fosse registrado por registro. Mas só registra o ultimo registro alterado.

Ou seja só dispara a trigger uma unica vez no update que seria para ´n´ registro.

Imagino que deve conter alguma coisa para ser setada.


SE mais Obrigado pessoal
T+
Dimmy :roll:


Dimmy

Dimmy

Responder

Posts

29/06/2006

Emerson Nascimento

você precisa trabalhar todos os registros na trigger. para isso, crie um cursor local. nesse cursor você deve trabalhar com a tabela [i:be2534cc27]inserted[/i:be2534cc27], que é uma tabela virtual (também local) do sql server pra trabalho com inserções e/ou atualizaçoes de dados.
seria algo assim:
   declare cursor_atualizados cursor local for
   select lista_de_campos
   from inserted -- aqui é inserted mesmo.
                 -- ela é uma tabela especial do sql server

   -- abre o cursor
   open cursor_atualizados

   -- pega o primeiro registro
   fetch next from cursor_atualizados
   into lista_de_variáveis -- deve ser igual a lista de campos

   -- esse LOOP fará a manipulação de todos os registros
   -- que sofreram alteração. ele irá executar enquanto seja
   -- possível passar para um próximo registro do cursor
   while @@FETCH_STATUS = 0
   begin
      -- ***********************************
      -- aqui vc deve gerar o seu log,
      -- trabalhando sempre com as variáveis
      -- ***********************************

      -- pega o próximo registro
      fetch next from cursor_atualizados
      into lista_de_variáveis
   end

   -- fecha o cursor
   close cursor_atualizados



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