Sei sulla pagina 1di 3

Examen de Administracin de base de datos

Luna Aguinaga Alderson


1.- REALIZAR UN TRIGGER CODIGO QUE GENERE SU CDIGO UNIVERSITARIO: -DEBE ESTAR CONFORMADO POR: ALUMNO_ID, SUS INICIALES DE SUS APELLIDO EN MAYUSC, Y LA EDAD

0001-P-S-24
CREATE OR REPLACE TRIGGER cod_uni before INSERT ON ALUMNO FOR EACH ROW declare y varchar(50); z varchar(50); x varchar(50); m varchar(50); n varchar(50); BEGIN select lpad( to_number( coalesce(substr(max(alumno_id),5,4),'0' ),'9999' )+1,4,'0') into z from alumno; x:=:new.persona_id; select upper(substr(p.PRIMER_APELLIDO,1,1)||''||substr(p.SEGUNDO_APELLIDO,1,1)) into y from persona p where p.persona_id=x; select to_char(p.FECHA_NAC,'yyyy') into m from persona p where p.persona_id=x; select to_char(sysdate,'yyyy') into n from dual; :new.COD_UNIVERSITARIO:=z||'-'||y||'-'||(n-m); end;

2.CREATE OR REPLACE TRIGGER nombre before update ON criterio_eval FOR EACH ROW declare y number(4,2); z varchar(50); x varchar(50); m varchar(50); n varchar(50); begin x:=:new.criterio_eval_id; z:=:new.carga_curso_id; select sum(ce.PESO) into y from matricula.matricula m, matricula.matricula_alumno_curso mac, matricula.carga_curso cc, matricula.plan_acad_curso pac, matricula.curso c, matricula.evalu_criterio ec, matricula.criterio_eval ce where m.MATRICULA_ID=mac.MATRICULA_ID and mac.CARGA_CURSO_ID=cc.CARGA_CURSO_ID and cc.PLAN_ACAD_CURSO_ID=pac.PLAN_ACAD_CURSO_ID and pac.CURSO_ID=c.CURSO_ID and mac.MATRICULA_CARGA_CURSO_ID=ec.MATRICULA_CARGA_CURSO_ID and ec.CRITERIO_EVAL_ID=x and cc.CARGA_CURSO_ID=z group by rollup(ce.CRITERIO) ,c.NOMBRE; if y>100 then Raise_application_error(-20201, 'Se ha excedido el porcentaje total'); end if; end;

3.CREATE OR REPLACE TRIGGER facultad before update on FACULTAD FOR EACH ROW BEGIN select 'F-'||lpad(to_number( coalesce(substr(max(facultad_id),3,4), '0' ),'9999' )+1,4,'0')into :new.facultad_id from facultad; :NEW.nombre :=upper(:NEW.nombre); delete FACULTAD set FACULTAD_ID = FACULTAD_ID + 1 WHERE NOMBRE = contabilidad; end facultad; / CREATE OR REPLACE TRIGGER facultad before delete on FACULTAD FOR EACH ROW BEGIN select 'F-'||lpad(to_number( coalesce(substr(max(facultad_id),3,4), '0' ),'9999' )+1,4,'0')into :new.facultad_id from facultad; :NEW.nombre :=upper(:NEW.nombre); delete FACULTAD set FACULTAD_ID = FACULTAD_ID + 1 WHERE NOMBRE = contabilidad; end facultad; /

Potrebbero piacerti anche