Sou iniciante em Oracle, e criei uma trigger para armazenar um histórico de alteração para auditoria. Porém, está acontecendo o seguinte erro:
----------ERROS:
Erro(12,10): PLS-00049: variável de ligação 'NEW.COD_FUNC' inválida
Erro(12,27): PLS-00049: variável de ligação 'OLD.COD_FUNC' inválida
Erro(31,10): PLS-00049: variável de ligação 'OLD.COD_FUNC' inválida
Erro(32,10): PLS-00049: variável de ligação 'OLD.NOME_FUNC' inválida
Erro(42,10): PLS-00049: variável de ligação 'NEW.COD_FUNC' inválida
Erro(43,10): PLS-00049: variável de ligação 'NEW.NOME_FUNC' inválida
Alguém poderia me ajudar?
--Essa é a tabela
CREATE TABLE TB_TRIGGER_FUNCIONARIO (
COD_FUNC INT,
NOME_FUNC VARCHAR (100));
--Tabela para auditoria
Create table aud_FUNC_AUDITADA(
seq_aud number(8),
dat_aud date,
tip_aud varchar2(1),
usuario_aud varchar2(60),
old_codfunc INT,
new_codfunc INT,
old_nome VARCHAR (100),
new_nome VARCHAR (100)
);
create sequence seq_aud_FUNC
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
------------------------------ESSA É A TRIGGER-------------------------
create or replace trigger aud_FUNC
after insert or update or delete on aud_FUNC_AUDITADA
REFERENCING OLD AS OLD NEW AS NEW
for each row
declare
--Local variables here
xtip_auditoria varchar2(1) := 'I';
begin
--Insere na variável a letra A para quando o registro for atualizado.
if updating then
xtip_auditoria := 'A';
--Consistência que não permite que seja alterado os campos PK
if :new.COD_FUNC <> :old.COD_FUNC then
raise_application_error ( -20002 , 'Você não pode alterar o(s) campo(s) " CHAVE_PRIMARIA " deste registro. Exclua e insira um registro novo.');
end if;
--
end if;
--
--Insere na tabela o registro quando ele for excluído.
if deleting then
xtip_auditoria := 'E';
--
insert into aud_FUNC_AUDITADA values (
seq_aud_FUNC.nextval ,
sysdate ,
xtip_auditoria ,
user ,
:old.COD_FUNC ,
:old.NOME_FUNC);
else
--Insere na tabela o registro quando ele for alterado ou inserido.
insert into aud_FUNC_AUDITADA values (
seq_aud_FUNC.nextval ,
sysdate ,
xtip_auditoria ,
user ,
:new.COD_FUNC,
:new.NOME_FUNC);
end if;
--===================================================================================================================
end ;