Está en la página 1de 2

--PARCIAL 2 OTRO GRUPO VERSIÓN 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;
v_idPaisPelicula NUMBER;
v_idPaisRep NUMBER;
--Tabla anidada
TYPE tablaRepresentantes IS TABLE OF representante.rep_id%TYPE;
v_tablaRepresentantes tablaRepresentantes;
BEGIN

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;

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 los id de los paises de los representantes de los actores de esta
película
--SELECT representante.pai_id BULK COLLECT INTO v_tablaRepresentantes FROM actua,
actor, pelicula,representante
--WHERE actua.act_id = actor.act_id AND actua.pel_id = pelicula.pel_id AND
actor.rep_id = representante.rep_id
--AND 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;

--FOR i IN 1..v_tablaRepresentantes.COUNT LOOP


--dbms_output.put_line('ENTREEEEEEEEE:');
--IF v_idPaisPelicula = v_tablaRepresentantes(i) 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 LOOP;

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;

dbms_output.put_line('ID PAIS DE LA PELI:' || ' '|| v_idPaisPelicula);


dbms_output.put_line('ID PAIS DEl REPRESENTANTE DEL ACTOR:' || ' '|| v_idPaisRep);
END IF;

END;

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

También podría gustarte