none
Função similar a TG_OP RRS feed

  • Discussão Geral

  • Boa tarde meus caros, gostaria de saber se existe em SQL Server alguma função similar a TG_OP do PostgreSQL. Para que fique mais claro, essa é uma função nativa do Postgree onde por uma cláusula de filtro IF ou SWITCH ele ja interpreta a manipulação da operação realizada pelo usuário e instância um determinado papel, segue um exemplo mais pratico:

    [code]

    CREATE OR REPLACE FUNCTION fn_function () RETURNS AS

    TRIGGER

    $exemplo_TG_OP$

    DECLARE

    -- nothing

         BEGIN

         IF (TG_OP = update) THEN

         old.dbo.dataultimaalteracao = getdate();

         END IF;

                    IF (TG_OP = insert) THEN

                    PRINT  'teste insert'

                    END IF;

                                      IF (TG_OP = delete) THEN

                                      PRINT 'deletado com sucesso'

                                      END IF;

                  RETURN NEW;

    END;

    $exemplo_TG_OP$

    END fn_function;    

    [/code]

     

    Fiz tudo bagunçado, mais pra terem uma idéia mesmo.                             

     

     

     

    • Tipo Alterado Heloisa Pires quarta-feira, 11 de abril de 2012 18:08
    terça-feira, 31 de janeiro de 2012 19:17

Todas as Respostas

  • Oi,

    Isso dentro de um trigger, correto ?

    Em geral, a manipulação das tabelas especiais para triggers é suficiente. O trigger tem a disposição uma tabela Inserted para os registros inseridos ou atualizados e uma tabela Deleted para os registros deletados ou atualizados.

    Se um registro estiver só na inserted, foi inserido.

    Se estiver só na deleted, foi deletado.

    Se estiver em ambas ele foi atualizado.

    Existe uma função UPDATE(<campo>) para identificar se um determinado campo foi atualizado.

    Abs,

    Dennes
    ******Evento : SQL Saturday Rio - Inscreva-se já neste evento gratuito - http://www.sqlsaturday.com/127/eventhome.aspx

     


    Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp
    terça-feira, 31 de janeiro de 2012 20:30
  • Me perdoe, mas não consegui compreender muito bem o que quis dizer. =/    O intuito da minha pergunta é evitar em hipotese a criação de 3 triggers diferentes para a mesma table. Também, na verdade não é exatamente dentro de um TRIGGER, e sim uma stored procedure que é instanciada por um TRIGGER. A chamada da função ficaria +- assim em PL:

    CREATE OR REPLACE TRIGGER nm_trigger [AFTER/BEFORE] insert or update or delete ON [ TABLE ]

    FOR EACH ROW EXECUTE PROCEDURE fn_function () ;

     

    - Gostaria de saber também, se puder me responder, a que ponto a performace é comprometida das querys são comprometidas, fazendo o uso de triggers para instanciar logs em todas as tabelas. Hora e data da alteração, quem alterou, e qual a ultima alteração. Repetindo, em todas as tabelas do banco irei possuir esses atributos.

    Porisso o motivo da minha pergunta sobre o TG_OP, pois meu trabalho nessa situação seria bastante reduzido e consequentemente também talvez a performace.

    Obrigado.

    quarta-feira, 1 de fevereiro de 2012 12:02