Prova 2 Banco de Dados 2 – Prof Israel 08/11/2004 Curso: Eng de Computação Bruno de André Mazzoco Ra: 02150522 1) Criação das Tabelas create Table MOVIMENTOS( Numero number(3) not null, Tipo varchar2(1) not null, Num_Conta number(5) not null, Valor number(3) not null); create Table CONTAS( Numero number(5) not null, Saldo number(3) not null, Cod_Agencia number(4) not null); create Table Agencia( Codigo number(4) not null, Nome varchar2(15) not null, Local varchar2(15) not null); 2)Criação das Chaves Alter table MOVIMENTOS add constraint pk_movimentos primary key (Numero); Alter table CONTAS add constraint pk_contas primary key (Numero); Alter table Agencia add constraint pk_agencia primary key (Codigo); Alter table MOVIMENTOS add constraint pk_mov_conta foreign key (NUM_CONTA) references CONTAS(NUMERO); Alter table CONTAS add constraint pk_conta_agen foreign key (COD_AGENCIA) references AGENCIA(CODIGO); 3)a) i) create sequence SEQ_NUM_MOV; create or replace trigger TRG_NUM_MOV before insert on MOVIMENTOS for each row begin select seq_num_mov.nextval into :new.numero from dual; end; / ii) create or replace trigger TRG_ATUAL_SALDO after insert on MOVIMENTOS for each row begin if (:new.tipo='C') then Update CONTAS Set Saldo = Saldo+(:new.valor) Where Numero = :new.num_conta; end if; if (:new.tipo='D') then Update CONTAS Set Saldo = Saldo-(:new.valor) Where Numero = :new.num_conta; end if; end; / 3b) insert into MOVIMENTOS (TIPO,NUM_CONTA,VALOR,DATA) values ('C','00001','300',sysdate) 3c) 3d) create or replace procedure LIMPA_MOVIMENTOS is begin for PESQUISA in (select * from MOVIMENTOS) loop if to_char (PESQUISA.DATA,'DD') <= (sysdate-180) then delete from MOVIMENTOS where NUMERO=PESQUISA.NUMERO; end if; end loop; end; / 3e) Declare vjob Number; begin dbms_job.submit(vjob,'LIMPA_MOVIMENTOS;',sysdate,'sysdate+1/24'); end; / para disparar: Dmbs_job.run(vjob);