Bem, com 99,99% de certeza isso parece ser furo da tua Lógica : pra começar,
cfrme o meu exemplo abaixo (e cfrme citado no manual!!) , para INSERTs o valor
OLD vai fucar NULL, então a tua restrição :
... WHERE CODIGOMATINT = :old.codigomating ...
** NUNCA ** vai ser verdadeira para INSERTs, pois cfrme Comprovado e
Documentado os valores OLD vão ser NULOS para INSERTs, e NULO NUNCA vai ser
igual a CODIGOMATINT , nem igual nem diferente de coisa alguma - lógica
tri-valorada, NULL é NULO, não é nem igual nem diferente de coisa alguma...
Evidência/demonstração :
SYSTEM@O10GR2:SQLcreate table t (c1 number);
Tabela criada.
SYSTEM@O10GR2:SQLcreate or replace trigger T_TESTE after insert or update on t
for each row
2 BEGIN
3 if inserting then
4dbms_output.put_line('Para INSERT, old=' || :old.c1 || ',new=' ||
:new.c1);
5 else
6dbms_output.put_line('Para Update, old=' || :old.c1 || ',new=' ||
:new.c1);
7 end if;
8 END;
9 /
Gatilho criado.
SYSTEM@O10GR2:SQLset serveroutput on size 100
SYSTEM@O10GR2:SQLinsert into T values(1);
Para INSERT, old=,new=1
1 linha criada.
SYSTEM@O10GR2:SQLupdate T set c1=2;
Para Update, old=1,new=2
1 linha atualizada.
SYSTEM@O10GR2:SQL
[]s
Chiappa
---Em oracle_br@yahoogrupos.com.br, rafael.henri...@gmail.com escreveu:
Pessoal, bom dia!!
Tem duas tabelas relacionadas: est_cadmaterial e est_itensdeestoque
Na aplicação, quando atualizado o cadastro de materiais (est_cadmaterial) o
sistema também atualiza alguns parametros na tabela est_itensdeestoque em
background, via aplicação.
Porém preciso criar uma trigger que quando o parametro GERARATEIOMAT = S na
tabela est_cadmaterial, a trigger deve atualizar a tabela est_itensdeestoque,
setando o campo BLOQUEIAMOVTORATEIO = S.
Estou escrevendo o seguinte código, porém nada acontece. Poderiam me ajudar a
resolver o problema?
create or replace TRIGGER TR_EST_BLOQUEIARATEIO
after insert or update on est_cadmaterial
for each row when (new.gerarateiomat = 'S')
BEGIN
UPDATE est_itensdeestoque SET bloqueiamovtorateio = 'S' WHERE CODIGOMATINT
= :old.codigomatint;
END;
--
Att,
Rafael HM Pereira