none
problema com trigger de inserted, updated e deleted RRS feed

  • Pergunta

  • Preciso de uma trigger que identifique as operações em uma tabela (insert, update ou delete) e grave em outra tabela mas não sei como fazer isso.

    Alguém poderia me ajudar

      create trigger tr_log ON materiais
    for insert, update, delete
    as

    begin transaction
    begin try

    --se for update

    if (se for update) gravar na tabela log_sistema = 'UPD'

    -- se for  insert

    senão (se for insert) gravar na tabela log_sistema = 'INS'

    -- se for delete
            senão (se for delete) gravar na tabela log_sistema = 'DEL'
    commit

    end try
    begin catch
    print 'erro no script - tr_log'
    rollback
    end catch

    sexta-feira, 30 de novembro de 2012 17:45

Respostas

  • Olá, para identificar cada caso deve fazer o seguinte

    -- INSERT
    IF NOT EXISTS(SELECT 1 FROM DELETED) AND EXISTS(SELECT 1 FROM INSERTED) BEGIN 
    END 
    -- UPDATE 
    IF EXISTS(SELECT 1 FROM DELETED) AND EXISTS(SELECT 1 FROM INSERTED) BEGIN 
    END 
    -- DELETE 
    IF EXISTS(SELECT 1 FROM DELETED) AND NOT EXISTS(SELECT 1 FROM INSERTED) BEGIN 
    END

    Abçs
    sexta-feira, 30 de novembro de 2012 18:50

Todas as Respostas