[oracle_br] Re: Ajuda c/ trigger

2014-09-09 Por tôpico rafael.henri...@gmail.com [oracle_br]
Chiappa, bom dia!! 

 Muito obrigado pelo retorno!
 

 Conforme orientado, realizei o ajuste no código. Segue abaixo as modificações.
 

 Para exemplificar o cenário, estou enviando a imagem em anexo:
 

 http://tinypic.com/r/241rnkl/8 http://tinypic.com/r/241rnkl/8

 

 

 -
 create or replace TRIGGER TR_EST_BLOQUEIARATEIO
 after insert or update on est_cadmaterial
 for each row when (new.gerarateiomat = 'S')
 BEGIN
 if updating then
 UPDATE est_itensdeestoque SET bloqueiamovtorateio = 'S' WHERE 
CODIGOMATINT = :old.codigomatint;
 else 
 UPDATE est_itensdeestoque SET bloqueiamovtorateio = 'S' WHERE 
CODIGOMATINT = :new.codigomatint;
 end if;
 END;
 ---
 

 

 Obrigado

 

 
  


 



[oracle_br] Re: Ajuda c/ trigger

2014-09-09 Por tôpico rafael.henri...@gmail.com [oracle_br]
Chiappa, bom dia!! 

 Muito obrigado pelo retorno!
 

 Conforme orientado, ajustei a trigger, porém continua sem funcionar. Abaixo as 
alterações.
 

 Também estou enviando uma imagem para demonstrar meu cenário.


 chiappa Pictures, chiappa Images, chiappa Photos, chiappa Videos - Image - 
TinyPic - Free Image Hosting, Photo Sharing  Video Hosting 
http://tinypic.com/r/241rnkl/8 
 
 http://tinypic.com/r/241rnkl/8 
 
 chiappa Pictures, chiappa Images, chiappa Photos, c... 
http://tinypic.com/r/241rnkl/8 Tinypic™ is a photo and video sharing service 
that allows you to easily upload, link and share your images and videos on 
MySpace®, eBay®, blogs and messag...
 
 
 
 Visualizar em tinypic.com http://tinypic.com/r/241rnkl/8 
 Visualização pelo Yahoo 
 
 
  


 

 

 --
 

 create or replace TRIGGER TR_EST_BLOQUEIARATEIO
 after insert or update on est_cadmaterial
 for each row when (new.gerarateiomat = 'S')
 BEGIN
 if updating then
 UPDATE est_itensdeestoque SET bloqueiamovtorateio = 'S' WHERE 
CODIGOMATINT = :old.codigomatint;
 else 
 UPDATE est_itensdeestoque SET bloqueiamovtorateio = 'S' WHERE 
CODIGOMATINT = :new.codigomatint;
 end if;
 END;
 


 --
 

 



[oracle_br] Re: Ajuda c/ trigger

2014-09-08 Por tôpico jlchia...@yahoo.com.br [oracle_br]
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