terça-feira, 29 de janeiro de 2008

Oracle - Trigger

Exemplos de trigger no Oracle, com o objetivo de inserir ou alterar registros em outra tabela.
Alguns links que muito me ajudaram: http://www.linhadecodigo.com.br/Artigo.aspx?id=322&pag=1 e http://www.psoug.org/library.html

As triggers:

create or replace TRIGGER "LOGIX"."VDP_PROXIMO_FORM_NF_1_962"
after insert on nf_mestre for each row
declare
v_num_formulario number(10);
begin
select CAST(val_parametro as INTEGER) into v_num_formulario FROM log_val_parametro WHERE parametro='prx_frm_nf';
insert into obf_dief_dispo
(empresa, nota_fiscal, serie_nota_fiscal, num_ini_dispo, num_fim_dispo, dat_movto, cancelado, dispositivo, modelo, docum_inicial, docum_final, aidf, indica_tip_geracao)
values (:new.cod_empresa, :new.num_nff, :new.ser_nff, v_num_formulario, v_num_formulario, :new.dat_emissao, 'N', ' ', ' ', 0, 0, ' ', 'A');
UPDATE log_val_parametro SET val_parametro=CAST(v_num_formulario+1 AS VARCHAR(10)) WHERE parametro='prx_frm_nf';
end;
/

create or replace TRIGGER "LOGIX"."VDP_PROXIMO_FORM_NF_2_962"
after update of ies_situacao on nf_mestre for each row
when (new.ies_situacao='C')
begin
update obf_dief_dispo
set cancelado='S'
where empresa=:old.cod_empresa and nota_fiscal=:old.num_nff and serie_nota_fiscal=:old.ser_nff and cancelado='N';
end;
/