none
Disparar trigger somente para linhas RRS feed

  • Pergunta

  • Ola pessoal,

    minha duvida é eu tenho uma trigger:

    [code]
    create trigger rlroomtran_special_update on rlroomtran for insert,update,delete
    as
    begin
    ....
    [/code]

    mais quando da um update nesta tabela(rlroomtran) pode acontecer de atualizar mais que uma linha!

    existe alguma forma de falar que minha trigger dispare somente linha por linha ?

    exemplo: update rlroomtran set available = 10 where datai <= @var and datae >= @var, vamos supor que este where retorno 10 linhas, eu quero que minha trigger dispare para cada linha.

    existe isso ?

    valeu.
    sexta-feira, 13 de abril de 2007 15:49

Todas as Respostas

  •  

      vc. pode ou usar uma trigger instead of e tratar no codigo quando vai ocorrer a trigger ( mais nao esquece que essa trigger nao vai fazer o que disparou ela )

     

    ou crie uma variavel table com um campo identiy e faca um loop

     

    exemplo

     

     create trigger nome on tabela

     after insert

     

     delcare @tloop table (idx int identity(1,1), campo1 int .... ) -- todos os campos da tabela

     

     insert into @loop (campos) Select campos from inserted

     

     declare @start int

     declare @end int

     

     select @start =1, @end = max(idx) from @loop

     

     while @start <= @end

     Begin

     

      Select campos from @lopp where idx = @start -- pode pegar os campos para executar linha a linha

     

     

     

     

     end

    sexta-feira, 13 de abril de 2007 16:05