triggers em oracle

d3baser

Power Member
Hey, ao tentar criar este trigger o oracle dá-me erro...

o trigger:
create or replace trigger stockTrigger
before update on produto
referencing new as nrow
for each row
when (nrow.stock < = 20)
begin
insert into produto
values (nrow.IDProd, nrow.descProd, nrow.stock+20);
end;
/

E o erro:
LINE/COL ERROR
-------- -----------------------------------------------
2/4 PL/SQL: SQL Statement ignored
3/45 PL/SQL: ORA-00984: coluna não é aqui permitida

Alguém me pode dizer qual o erro? Ele deixa criar, mas diz que foi compilado com erros...

Já descubri o erro, faltava ":" antes do nrow :)

Já não dá erro, mas o trigger não "dispara" :\
Alguém sabe do que possa ser?
 
Última edição:
Ninguém me consegues ajudar? :\

É um bocado urgente...

edit:
Quando o trigger dispara aparece isto:
ORA-04091: table SCOTT.PRODUTO is mutating, trigger/function may not see it
ORA-06512: at "SCOTT.STOCKTRIGGER", line 2
ORA-04088: error during execution of trigger 'SCOTT.STOCKTRIGGER'
 
Última edição:
Esse erro (ORA-04091) deve-se ao facto de estares a tentar modificar a tabela sobre a qual o trigger está "armado" (o trigger é sobre a tabela PRODUTO e a resposta do trigger é inserir um novo registo nessa mesma tabela).
Creio que basta despoletares o trigger "after update" em vez de "before update", porque nessa altura a tabela não está bloqueada.
 
Back
Topo