Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 16 anos, 7 meses atrás por Avatar photoLeonardo Litz.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #88715
    RomuloRDM
    Participante

      Boa tarde,

      Tenho uma tabela chamada “EMPRESA” e preciso que assim que for inserido um registro que seja gravado em uma outra tabela com o nome “AUDITORIA” a data e a sessao que o originou o lancamento, tem como fazer isto?

      Desde já agradeço a atenção.

      RomuloRDM

      #88722
      Avatar photoRegis Araujo
      Participante

        Opa Romulo…

        Vc pode usar uma TRIGGER com a opção AFTER INSERT ou BEFORE INSERT..

        Ai para pegar a Sessão.. vc faz assim..

        NA SUA TABELA..

        Ex:


        INSERT INTO AUDITORIA (DATA, SESSAO)
        VALUES (SYSDATE, SELECT SYS_CONTEXT('USERENV','SESSIONID') FROM DUAL) ;

        O SYS_CONTEXT(‘USERENV’,’SESSIONID’) vai trazer o ID da sessão que executou a alteração…

        Mas eu aconselho vc a usar alem do passado acima.. os 3 abaixo..

        SYS_CONTEXT(‘USERENV’,’TERMINAL’) — NOME DA MÁQUINA Q EXECUTOU

        SYS_CONTEXT(‘USERENV’,’SESSION_USER’) — USUÁRIO QUE EXECUTOU

        SYS_CONTEXT(‘USERENV’,’OS_USER’) — USUÁRIO DE REDE QUE EXECUTOU

        Basta utilizar as 3 instruções acima conforme passei no exemplo..

        Abraços.. Espero que lhe ajude..

        Abraços..!!!

        #88729
        Avatar photoLeonardo Litz
        Participante

          Veja se te atende:


          CREATE OR REPLACE TRIGGER trg_auditoria
          AFTER INSERT on EMPRESA
          FOR EACH ROW
          DECLARE
          BEGIN

          INSERT INTO AUDITORIA (DATA, SESSAO) 
          

          VALUES (SYSDATE, SYS_CONTEXT('USERENV','SESSIONID')) ;

          END trg_auditoria;

          Grato Leonardo Litz

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.