Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos.
Criei uma trigger de auditoria no Oracle, porém não roda de jeito algum. Não consigo entender porque ocorre erro nessa linha:
SQL> show errors;
Erros para TRIGGER TRG_AUD_DEPTALLIMROTULO:
LINE/COL ERROR
-------- -----------------------------------------------------------------
53/7 PL/SQL: SQL Statement ignored
53/27 PL/SQL: ORA-00942: a tabela ou view não existe
SQL>
Segue a trigger
create or replace trigger trg_aud_deptallimrotulo after insert or delete or
update of CD_CRITERIO, CD_ROTULO, NM_LIMITEINI, NM_LIMITEFIM
on DEPTAL_LIMITE_ROTULO for each row v_operacao varchar2(0100) := null;
v_tabela varchar2(0100) := 'DEPTAL_LIMITE_ROTULO';
v_terminal varchar2(0100) := null;
v_id_chave varchar2(0500) := null;
v_conteudo_antigo varchar2(2000) := null;
v_conteudo_atual varchar2(2000) := null; v_id_chave := ' CD_CRITERIO = '||to_char(:new.CD_CRITERIO);
v_id_chave := v_id_chave ||' AND';
v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:new.CD_ROTULO);
else
v_id_chave := ' CD_CRITERIO = '||to_char(:old.CD_CRITERIO);
v_id_chave := v_id_chave ||' AND';
v_id_chave := v_id_chave ||' CD_ROTULO = '||to_char(:old.CD_ROTULO);
end if;
if inserting then
v_operacao := 'INSERT';
v_conteudo_atual := ' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL');
v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL');
v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL');
v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL');
elsif updating then
if nvl(:new.CD_CRITERIO,0) != nvl(:old.CD_CRITERIO,0) then
v_operacao := 'UPDATE';
v_conteudo_atual := v_conteudo_atual ||' CD_CRITERIO='||nvl(:new.CD_CRITERIO,'NULL');
v_conteudo_antigo := v_conteudo_antigo ||' CD_CRITERIO='||nvl(:old.CD_CRITERIO,'NULL');
end if;
if nvl(:new.CD_ROTULO,0) != nvl(:old.CD_ROTULO,0) then
v_operacao := 'UPDATE';
v_conteudo_atual := v_conteudo_atual ||',CD_ROTULO='||nvl(:new.CD_ROTULO,'NULL');
v_conteudo_antigo := v_conteudo_antigo ||',CD_ROTULO='||nvl(:old.CD_ROTULO,'NULL');
end if;
if nvl(:new.NM_LIMITEINI,'0') != nvl(:old.NM_LIMITEINI,'0') then
v_operacao := 'UPDATE';
v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEINI='||nvl(:new.NM_LIMITEINI,'NULL');
v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEINI='||nvl(:old.NM_LIMITEINI,'NULL');
end if;
if nvl(:new.NM_LIMITEFIM,'0') != nvl(:old.NM_LIMITEFIM,'0') then
v_operacao := 'UPDATE';
v_conteudo_atual := v_conteudo_atual ||',NM_LIMITEFIM='||nvl(:new.NM_LIMITEFIM,'NULL');
v_conteudo_antigo := v_conteudo_antigo ||',NM_LIMITEFIM='||nvl(:old.NM_LIMITEFIM,'NULL');
end if;
if v_conteudo_atual is null then
return;
end if;
elsif deleting then
v_operacao := 'DELETE';
end if;
declare
cursor mach is
select machine from v$session
where username = user;
begin
open mach;
fetch mach into v_terminal;
close mach;
end;
insert into f_auditoria(data
,hora
,usuario
,terminal
,tabela
,id_chave
,conteudo_antigo
,conteudo_atual
,operacao ) values
(trunc(sysdate)
,to_char(sysdate,'HH24MISS')
,user
,v_terminal
,v_tabela
,v_id_chave
,v_conteudo_antigo
,v_conteudo_atual
,v_operacao);
end;Carregando comentários...