trigger after - auditoria

0 views
Skip to first unread message

Profa. Simone Cristina Aléssio

unread,
Dec 6, 2013, 12:39:10 PM12/6/13
to geracaot...@googlegroups.com


create or replace trigger tr_atualiza_produto
  after update or delete on produto_trg  
for each row
declare
  aux_seq    number(10);
  aux_sq     number(10);
  aux_sq_his number(10);
begin
     if updating then
     
       select nvl(max(num_seq),0) + 1
       into   aux_seq
       from produtos_atualizados;
       
       
   

         insert into produtos_atualizados a (a.num_seq,
                                             a.cod_prod,
                                             a.qt_anterior,
                                             a.qt_atual,
                                             a.vl_prod,
                                             a.owner,
                                             a.dt_atual) 
                                          values (aux_seq,
                                                  :old.cod_prod,
                                                  :old.qt_estoque,
                                                  :new.qt_estoque,
                                                  :old.vl_prod,
                                                  'SIMONE',
                                                  sysdate);
                                                  
        if   :new.qt_estoque = 0 then 
              
             select nvl(max(num_sq),0) + 1
             into   aux_sq
             from produtos_falta;                                               
           
             insert into produtos_falta f (f.num_sq,
                                           f.cod_prod,
                                           f.ds_prod,
                                           f.qt_estoque,
                                           f.qt_falta,
                                           f.id_status)
                                         values (aux_sq,
                                                 :old.cod_prod,
                                                 :old.ds_prod,
                                                 :old.qt_estoque,
                                                 0,
                                                 'A');
       
        end if;
    elsif deleting then
    
     select nvl(max(num_sq_his),0) + 1
             into   aux_sq_his
             from HIST_PROD_EXC; 
             
             
        if :old.qt_estoque = 0 or :old.qt_estoque is null then
            insert into  HIST_PROD_EXC e (e.num_sq_his,
                                          cod_prod,
                                          qt_estoque,
                                          vl_preco)
                                       values (aux_sq_his,
                                               :old.cod_prod,
                                               :old.qt_estoque,
                                               :old.vl_prod);
        -- else
             -- raise_application_error(100,' Produto com estoque não pode ser excluído!');
              
          end if;
                                              
 end if;                                       

end tr_atualiza_produto;

TABELAS ENVOLVIDAS

create table PRODUTO_TRG
(
  COD_PROD   NUMBER(10) not null,
  DS_PROD    VARCHAR2(100) not null,
  VL_PROD    NUMBER(10),
  QT_ESTOQUE NUMBER(10),
  QT_FALTA   NUMBER(10),
  ID_STATUS  VARCHAR2(1)
);

create table PRODUTOS_ATUALIZADOS
(
  NUM_SEQ     NUMBER(10) not null,
  COD_PROD    NUMBER(10) not null,
  QT_ANTERIOR NUMBER(10) not null,
  QT_ATUAL    NUMBER(10) not null,
  VL_PROD     NUMBER(10) not null,
  OWNER       VARCHAR2(50),
  DT_ATUAL    DATE
);

create table PRODUTOS_FALTA
(
  COD_PROD   NUMBER(10) not null,
  DS_PROD    VARCHAR2(100) not null,
  QT_ESTOQUE NUMBER(10),
  QT_FALTA   NUMBER(10),
  ID_STATUS  VARCHAR2(1),
  NUM_SQ     NUMBER(10) not null
);



______________________________________
Profa: Simone Cristina Aléssio
Administração - Sistemas de Informação
Reply all
Reply to author
Forward
0 new messages