none
Problema com TRIGGER RRS feed

  • Pergunta

  • Bom dia. Eu estou precisando criar uma TRIGGER ao atualizar um campo em minha tabela. O nome da tabela é CorProduto, e quando eu gravar o valor "1" no campo CX_EAN13, ele processa a TRIGGER e altera neste campo com o código de barras.

     

    Este mesmo procedimento efetuo ao incluir um registro. Neste caso, eu já tenho a TRIGGER correta e que vou colar abaixo, mas ao alterar não estou conseguindo fazer, pois não tenho muita experiência em trabalhar com TRIGGER.

     

    CREATE Trigger IncluirCodigoBarras on dbo.CorProduto
    For Insert As
     Begin
      If Exists(Select EAN13 from Inserted Where EAN13 = '1')
      Begin
       Declare @Numero VarChar(15)
       
       Select  
       @Numero = Convert(VarChar,Convert(VarChar,SubString(Convert(VarChar,Max(EAN13)),1,8))
       + Replicate('0',4 - Len(Max(Substring(Convert(VarChar,EAN13),9,4)) + 1))
       + Convert(VarChar,Max(Substring(Convert(VarChar,EAN13),9,4)) + 1 )
       ) 
       from corproduto
       
       
       Update  CorProduto Set
        EAN13 = SIL.dbo.GeraBarra(@Numero)
       From  Inserted i,CorProduto c
       Where
        c.CodigoTipo = i.CodigoTipo And
        c.CodigoBitola = i.CodigoBitola And
        c.CodigoCor = i.CodigoCor
       
      end

     End

     

    O código tem que ser o mesmo, mas tem que funcionar ao alterar o registro. Como devo fazer? Como tem a opção Inserted, existe a Updated? Não sei se estou falando besteira.

     

    Obrigado e aguardo retorno...

     

    Alex

     

    sexta-feira, 17 de agosto de 2007 12:24

Todas as Respostas

  • Alex,

     

    Updated não existe, quando você esta fazendo um Update por padrão é utilizado a Inserted ou Deleted!!!

     

    sexta-feira, 17 de agosto de 2007 13:56
  • Boa tarde Alex

     

    sua trigger está sendo disparada apenas no evento de insert basta você colocá-la para ser executada no evento de update.

     

    CREATE Trigger IncluirCodigoBarras on dbo.CorProduto
    For Insert,Update As
     Begin
      If Exists(Select EAN13 from Inserted Where EAN13 = '1')
      Begin
       Declare @Numero VarChar(15)
       
       Select  
       @Numero = Convert(VarChar,Convert(VarChar,SubString(Convert(VarChar,Max(EAN13)),1,8))
       + Replicate('0',4 - Len(Max(Substring(Convert(VarChar,EAN13),9,4)) + 1))
       + Convert(VarChar,Max(Substring(Convert(VarChar,EAN13),9,4)) + 1 )
       ) 
       from corproduto
       
       
       Update  CorProduto Set
        EAN13 = SIL.dbo.GeraBarra(@Numero)
       From  Inserted i,CorProduto c
       Where
        c.CodigoTipo = i.CodigoTipo And
        c.CodigoBitola = i.CodigoBitola And
        c.CodigoCor = i.CodigoCor
       
      end

     End

    GO

     

    Espero ter ajudado
    sexta-feira, 17 de agosto de 2007 15:34