none
Trigger BEFORE INSERT no SQL SERVER RRS feed

  • Pergunta

  • Boa tarde

        Preciso fazer um trigger mto simples que atualize uma coluna Datetime em uma determinada tabela, porém fui criado no Oracle e não consigo imaginar a vida sem o NEW e o OLD.

    De certa a forma a Trigger vai ser assim:

    antes de fazer o insert na tabela exemplo preciso que a coluna dh_evento receba o getdate() somente para este insert.

    Muito Obrigado!
    quarta-feira, 5 de setembro de 2012 18:42

Todas as Respostas

  • O SQL Server não possui trigger Before.

    A questão é: você precisa mesmo que sua rotina aconteça antes de cadastrar o registro?

    Talvez esta tal coluna já possa ter como valor default a função GetDate().


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 5 de setembro de 2012 19:30
  • Jowferraz,

    No SQL Server utilizamos o conceito de Trigger Transacional do After ou Instead Of.

    Uma possibilidade seria você trabalhar com uma Stored Procedure específica para realizar Inserts, onde você desenvolveria a esta Procedure e dentro dela você teria a capacidade de utilizar uma variável para armazenar o momento de execução antes do Insert e Commit.

    A sugestão do Roberson é bastante simples, prática e inteligente de ser utilizada, eu mesmo já utilizei muito.


    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]

    quinta-feira, 6 de setembro de 2012 19:04
  • Boa Tarde,

    Se você não imagina a vida sem o NEW e sem o OLD do Oracle você está vivendo muito pouco (rs). Uma vez que não faz diferença que o GETDATE() seja colocado antes ou depois do INSERT, o uso de triggers "Before" é irrelevante (afinal o resultado final é o mesmo tendo o GETDATE antes ou depois). Qualquer trigger será capaz de oferecer esse resultado (seja Instead Of ou After).

    Se a idéia da trigger é somente para INSERT, o uso de uma constraint é mais interessante, pois, é bem mais leve que uma trigger.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    segunda-feira, 10 de setembro de 2012 15:58
  • Maia,

    A ideia da Constraint diretamente na própria tabela é uma possibilidade interessante, ainda mais fazendo uso da Default passando GetDate.

    Mas parece que não era isso que o nosso amigo estava querendo.


    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, 12 de setembro de 2012 18:20