Está en la página 1de 1

--Trigger

CREATE OR REPLACE TRIGGER parcial2 BEFORE INSERT ON actua FOR EACH ROW

DECLARE
--Variable para guardar cantidad de premios
v_numPremios NUMBER:=0;
--Variable para guardar el ID del país de la película
v_idPaisPelicula NUMBER;
--Variable para guardar el ID del pais del representante del actor que se busca
vincular a la película
v_idPaisRep NUMBER;

BEGIN
--Capturando la cantidad de premios d ela película
SELECT COUNT (premio.pre_id) INTO v_numPremios FROM pelicula_premio, premio,
pelicula WHERE pelicula_premio.pel_id = pelicula.pel_id
AND pelicula_premio.pre_id = premio.pre_id AND pelicula.pel_id = :NEW.pel_id;

--Sino tiene premios


IF v_numPremios = 0 THEN
--Capturando el id del pais de esa película
SELECT pelicula.pai_id INTO v_idPaisPelicula FROM pelicula WHERE pelicula.pel_id
= :NEW.pel_id;
--Capturando el ID del pais del representante del actor que se quiere vincular a la
película
SELECT representante.pai_id INTO v_idPaisRep FROM actor, representante WHERE
actor.rep_id = representante.rep_id AND actor.act_id = 5;
IF v_idPaisPelicula = v_idPaisRep THEN
RAISE_APPLICATION_ERROR(-20500, 'NO SE ADMITEN PELICULA SIN PREMIOS CON ACTORES CON
REPRESENTANTE DEL MISMO PAÍS DE LA PELÍCULA');
END IF;
END IF;
END;

--Test
SET SERVEROUTPUT ON;
insert into ACTUA (PEL_ID, ACT_ID, SALARIO, NUM_CONTRATO) values (4, 5, 2000000,
120);

También podría gustarte