ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Triggers: Verificar que una persona del staff tenga un máximo de 3 carreras por organizar


Enviado por   •  2 de Noviembre de 2015  •  Trabajos  •  1.231 Palabras (5 Páginas)  •  101 Visitas

Página 1 de 5

Triggers

1.Verificar que una persona del staff tenga un máximo de 3 carreras por organizar

create or replace trigger verificastaff

before update or insert

on organiza

referencing old as o new as n

for each row

declare

v_maxcarreras number(10);

v_total number(10);

begin

select Nocarrera

into v_maxcarreras

from staff s

where s.Nstaff=:n.Nstaff;

if v_maxcarreras = 3 then

raise_application_error(-20001,'El staff no le permite organizar mas carreras');

else

update staff

set Nocarrera=Nocarrera+1

where Nstaff=:n.Nstaff;

end if;

end;

update staff

set Nocarrera=2

where Nstaff='Carlos';

insert into staff

set Nocarrera=Nocarrera+2

where Nstaff='Carlos';

insert into staff values (18,'c','b',1,2,'m',1,0);

select * from staff

where Nstaff='c';

insert into system.organiza values ('c','4');

2. Verificar que una carrera tenga un maximo de 200 inscripciones y un minimo de 50

create or replace trigger Verificarcarrera

before insert or update

on carrera

referencing old as o new as n

for each row

declare

begin

if :n.noinscrip>200 or :n.noinscrip<50 then

raise_application_error(-20001,'La inscripcion no se puede validar');

end if;

if updating then

if :n.noinscrip=201 then

raise_application_error(-20002,'La inscripcion debe ser menor a 200');

end if;

end if;

end;

insert into carrera(Cra#,Ncra,Fechacra,Noinscrip)

select Cra#,Ncra,Fechacra,Noinscrip

from carrera

where Noinscrip<200;

3.Insertar o actualizar asegurando que el #piloto o el #vehiculo no exista

create or replace trigger Existepilotos

before insert or update

on conduce

referencing old as o new as n

for each row

declare

v_verificara number;

v_verificarb number;

begin

select count(*) into v_verificara

from piloto p

where p.Piloto#=:n.Piloto#;

select count(*) into v_verificarb

from vehiculo v

where v.Vh#=:n.Vh#;

if v_verificara=0 or v_verificarb=0 then

raise_application_error(-20001,'Ni el piloto ni el vehiculo existe');

end if;

end;

insert into conduce(Vh#,Piloto#)

select Vh#,Piloto#

from conduce c

where Vh#=1 or Piloto#=0;

Stored procedures

1.Procedimiento en el que se ingrese el código del piloto y que devuelva el nombre del piloto, el nombre del equipo y el número de la inscripcion de la carrera

a la cual está inscrito, manejando excepción.

create or replace procedure pilotos

(p_Piloto# in number,p_Np out varchar2,p_Neq out varchar2, p_In# out number)

as

begin

select Np,Neq,In#

into p_Np,p_Neq, p_In#

from equipo e, piloto p, inscripcion i

where p.Eq#=e.Eq# and e.Eq#=i.Eq# and Piloto#=p_Piloto#;

exception

when no_data_found then

DBMS_output.put_line('El piloto no existe');

when others then DBMS_output.put_line('error');

end;

...

Descargar como (para miembros actualizados)  txt (9.2 Kb)   pdf (57.1 Kb)   docx (19 Kb)  
Leer 4 páginas más »
Disponible sólo en Clubensayos.com