none
Criar trigger ou algo parecido RRS feed

  • Pergunta

  • Prezados bom dia, seja se e possivel a SQL abaixo me retorna uma mensagem, gostaria que quanto fosse criado o proximo movimento (IDMOV), ele fizesse um update no campo COMPRAS, da observação.

    vejam

    SQL

    SELECT T.CODCOTACAO,T.OBSERVACAO,T2.IDMOV,T3.NUMEROMOV,T4.COMPRAS FROM TCCOTACAO AS T
    INNER JOIN TCCOTACAOITMMOV AS T2 ON T2.CODCOTACAO  = T.CODCOTACAO   AND T2.CODCOLIGADA = T.CODCOLIGADA
    INNER JOIN TITMMOV         AS TT ON TT.CODCOLIGADA = T2.CODCOLMOV   AND TT.IDMOV = T2.IDMOV AND TT.NSEQITMMOV = T2.NSEQITMMOV
    INNER JOIN TMOV            AS T3 ON T3.CODCOLIGADA = TT.CODCOLIGADA AND T3.IDMOV = TT.IDMOV
    INNER JOIN TMOVCOMPL       AS T4 ON T4.CODCOLIGADA = T3.CODCOLIGADA AND T4.IDMOV = T3.IDMOV
    WHERE T.CODCOTACAO = '2012.002460'
    AND TIPOMOVCOMPRAS = '2'

    Resultado

    Codcoltacao      Obs:                          IMOV       NUMERO        COMPRAS   

    2012.002460    RONNIE                    168305    019342          NULL

    Resultado esperado

    Codcoltacao      Obs:                          IMOV       NUMERO        COMPRAS   

    2012.002460    RONNIE                     168305    019342         RONNIE

    obrigado a todos pela ajuda.

    terça-feira, 29 de maio de 2012 12:50

Respostas

  • Ronnie,

    Veja se este exemplo ajuda a montar o seu trigger:

    --Criando a Table de Novos Produtos--
    Create Table NovosProdutos
     (Codigo Int Identity(1,1),
       Descricao VarChar(10))
    
    --Criando a Table de Histórico Novos Produtos--
    Create Table HistoricoNovosProdutos
     (Codigo Int,
       Descricao VarChar(10))
    Go
    
    --Inserindo valores --
    Insert Into Novosprodutos Values('Arroz')
    Insert Into Novosprodutos Values('Arroz1')
    Insert Into Novosprodutos Values('Arroz2')
    Insert Into Novosprodutos Values('Arroz3')
    Go
    
    --Criando a Trigger para controle de histórico--
    Create TRIGGER T_Historico
    ON NovosProdutos
    for update
    AS 
     IF (Select Descricao from Inserted) <> (Select Descricao from Deleted)
      BEGIN
       INSERT Into HistoricoNovosProdutos (Codigo, Descricao)
            SELECT Codigo, Descricao FROM INSERTED
      END
    Go
    
    --Fazendo os teste --
    
    
    Update NovosProdutos
    Set Descricao='Arroz 4'
    Where Codigo = 1
    Go
    
    Update NovosProdutos
    Set Descricao='Arroz1'
    Where Codigo = 2
    Go


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ronnie Von segunda-feira, 11 de junho de 2012 17:54
    quarta-feira, 6 de junho de 2012 12:39

Todas as Respostas

  • Ronnie,

    Mas qual seria a condição para saber se teríamos que realizar o Update?

    O que este Select deveria retornar com valor condicional?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    quarta-feira, 30 de maio de 2012 13:25
  • Desculpas Junior, vamos la

    A condiçao  Seria quanto tiver valor no IDMOV, ele atualizar o campo compras.

    Codcoltacao      Obs:                          IMOV       NUMERO        COMPRAS   

    2012.002460    RONNIE                     168305    019342         RONNIE

    ficou mas facil assim.

    quarta-feira, 30 de maio de 2012 13:37
  • Ronnie,

    Veja se este exemplo ajuda a montar o seu trigger:

    --Criando a Table de Novos Produtos--
    Create Table NovosProdutos
     (Codigo Int Identity(1,1),
       Descricao VarChar(10))
    
    --Criando a Table de Histórico Novos Produtos--
    Create Table HistoricoNovosProdutos
     (Codigo Int,
       Descricao VarChar(10))
    Go
    
    --Inserindo valores --
    Insert Into Novosprodutos Values('Arroz')
    Insert Into Novosprodutos Values('Arroz1')
    Insert Into Novosprodutos Values('Arroz2')
    Insert Into Novosprodutos Values('Arroz3')
    Go
    
    --Criando a Trigger para controle de histórico--
    Create TRIGGER T_Historico
    ON NovosProdutos
    for update
    AS 
     IF (Select Descricao from Inserted) <> (Select Descricao from Deleted)
      BEGIN
       INSERT Into HistoricoNovosProdutos (Codigo, Descricao)
            SELECT Codigo, Descricao FROM INSERTED
      END
    Go
    
    --Fazendo os teste --
    
    
    Update NovosProdutos
    Set Descricao='Arroz 4'
    Where Codigo = 1
    Go
    
    Update NovosProdutos
    Set Descricao='Arroz1'
    Where Codigo = 2
    Go


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ronnie Von segunda-feira, 11 de junho de 2012 17:54
    quarta-feira, 6 de junho de 2012 12:39