Pular para o conteúdo

Fóruns SQL e PL/SQL Dúvida trigger update Dúvida trigger update

#107591
Wender
Participante

    @luckzin

    Seguinte seu código de exemplo segue um exemplo que funcionaria para o que deseja, porém fiquei em uma dúvida, esta tabela terá apenas um registro. A função da trigger sempre será um update sem where?

    De qualquer forma segue abaixo:

    create or replace
    trigger teste
    after update of sn
    on testatrigger
    begin

    update testatrigger
    set nome = sys_context('USERENV','SESSION_USER');

    end;
    /

    Basta substituir o user pela função sys_context passando o parâmetro. Apenas uma observação que se tentar por exemplo utilizar where pelo sn onde terá que utilizar por exemplo:

    referencing new as new old as old
    for each row

    Neste caso irá retornar o erro “ORA-04091: table name is mutating, trigger/function may not see it.”, para resolver este problema terá que utilizar:

    declare
    pragma autonomous_transaction;

    Este irá fazer com que a trigger seja uma transação independente, porém utilize o commit ao final da trigger.