limpiar los archivos
This commit is contained in:
88
trigger.sql
88
trigger.sql
@@ -1,74 +1,62 @@
|
||||
-- Trigger 3
|
||||
CREATE OR REPLACE TRIGGER CORRELATIVE_INCREMENT_CIUDAD
|
||||
BEFORE INSERT
|
||||
ON CIUDAD
|
||||
|
||||
/* Pregunta 3*/
|
||||
CREATE OR REPLACE TRIGGER correlative_increment BEFORE INSERT ON ciudad FOR EACH ROW
|
||||
|
||||
DECLARE
|
||||
|
||||
idCiudad number;
|
||||
|
||||
BEGIN
|
||||
|
||||
SELECT MAX(id_ciudad) INTO idCiudad FROM ciudad;
|
||||
:new.id_ciudad := idCiudad + 1;
|
||||
END;
|
||||
|
||||
/* Pregunta 4 */
|
||||
|
||||
CREATE OR REPLACE TRIGGER Validacion_Pre_Competencia BEFORE INSERT ON PARTICIPAR_COMPETENCIA
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
CURSOR participar_preco
|
||||
IS SELECT PPC.id_precompetencia
|
||||
FROM PARTICIPAR_PRECOMPETENCIA PPC
|
||||
LEFT JOIN PRECOMPETENCIA PC ON PC.id_precompetencia = PPC.id_precompetencia
|
||||
WHERE PPC.id_atleta = :NEW.id_atleta AND pc.competencia = :NEW.id_competencia;
|
||||
|
||||
id_precompetencia PARTICIPAR_PRECOMPETENCIA.id_precompetencia%TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
OPEN participar_preco;
|
||||
FETCH participar_preco into id_precompetencia;
|
||||
IF participar_preco%found THEN
|
||||
dbms_output.put_line('EL ATLETA HA PARTICIPADO EN PRECOMPETENCIAS ASOCIADAS');
|
||||
ELSE Raise_Application_Error(-20120, 'NO SE PUEDE INSERTAR, EL ATLETA NO POSEE PRECOMPETENCIAS ASOCIADAS A LA COMPETENCIA');
|
||||
END IF;
|
||||
CLOSE participar_preco;
|
||||
v_id_ciudad CIUDAD.ID_CIUDAD%TYPE;
|
||||
|
||||
BEGIN
|
||||
SELECT MAX(ID_CIUDAD) INTO v_id_ciudad FROM CIUDAD;
|
||||
:NEW.ID_CIUDAD := v_id_ciudad + 1;
|
||||
END;
|
||||
|
||||
-- Trigger 4
|
||||
CREATE OR REPLACE TRIGGER VALIDACION_PRE_COMPETENCIA
|
||||
BEFORE INSERT
|
||||
ON PARTICIPAR_COMPETENCIA
|
||||
|
||||
INSERT INTO "PARTICIPAR_COMPETENCIA" (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES ('1', '21', TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
|
||||
|
||||
INSERT INTO "PARTICIPAR_PRECOMPETENCIA" (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, FECHA) VALUES ('3', '2', '100', TO_DATE('2020-06-27 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
|
||||
|
||||
INSERT INTO "PARTICIPAR_COMPETENCIA" (ID_COMPETENCIA, ID_ATLETA, FECHA) VALUES ('1', '21', TO_DATE('2020-07-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'));
|
||||
|
||||
|
||||
/* Pregunta 5 */
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
CURSOR PARTICIPAR_PRECO IS
|
||||
SELECT PPC.ID_PRECOMPETENCIA
|
||||
FROM PARTICIPAR_PRECOMPETENCIA PPC
|
||||
LEFT JOIN PRECOMPETENCIA PC ON (PC.ID_PRECOMPETENCIA = PPC.ID_PRECOMPETENCIA)
|
||||
WHERE (PPC.ID_ATLETA = :NEW.ID_ATLETA AND PC.COMPETENCIA = :NEW.ID_COMPETENCIA);
|
||||
|
||||
v_id_precompetencia PARTICIPAR_PRECOMPETENCIA.ID_PRECOMPETENCIA%TYPE;
|
||||
|
||||
BEGIN
|
||||
OPEN PARTICIPAR_PRECO;
|
||||
FETCH PARTICIPAR_PRECO INTO v_id_precompetencia;
|
||||
IF PARTICIPAR_PRECO%FOUND THEN
|
||||
DBMS_OUTPUT.PUT_LINE('EL ATLETA HA PARTICIPADO EN PRECOMPETENCIAS ASOCIADAS');
|
||||
ELSE
|
||||
RAISE_APPLICATION_ERROR(-20120, 'NO SE PUEDE INSERTAR, EL ATLETA NO POSEE PRECOMPETENCIAS ASOCIADAS A LA COMPETENCIA');
|
||||
END IF;
|
||||
CLOSE PARTICIPAR_PRECO;
|
||||
END;
|
||||
|
||||
-- Trigger 5
|
||||
CREATE OR REPLACE TRIGGER CALCULAR_VALOR_DELEGACION
|
||||
BEFORE INSERT OR UPDATE
|
||||
ON HOSPEDAR
|
||||
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
atletas DELEGACION.CANTIDAD_ATLETAS%TYPE;
|
||||
v_atletas DELEGACION.CANTIDAD_ATLETAS%TYPE;
|
||||
|
||||
BEGIN
|
||||
IF INSERTING THEN
|
||||
SELECT CANTIDAD_ATLETAS INTO atletas
|
||||
SELECT CANTIDAD_ATLETAS INTO v_atletas
|
||||
FROM DELEGACION WHERE (ID_DELEGACION = :NEW.ID_DELEGACION);
|
||||
|
||||
:NEW.PRECIO_DELEGACION := atletas * :NEW.PRECIO_ATLETA;
|
||||
:NEW.PRECIO_DELEGACION := v_atletas * :NEW.PRECIO_ATLETA;
|
||||
ELSIF UPDATING THEN
|
||||
SELECT CANTIDAD_ATLETAS INTO atletas
|
||||
SELECT CANTIDAD_ATLETAS INTO v_atletas
|
||||
FROM DELEGACION WHERE (ID_DELEGACION = :NEW.ID_DELEGACION);
|
||||
|
||||
:NEW.PRECIO_DELEGACION := atletas * :NEW.PRECIO_ATLETA;
|
||||
:NEW.PRECIO_DELEGACION := v_atletas * :NEW.PRECIO_ATLETA;
|
||||
END IF;
|
||||
END;
|
||||
|
||||
INSERT INTO HOSPEDAR (ID_HOTEL, ID_DELEGACION, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES (1, 1, 5, 50000);
|
||||
UPDATE HOSPEDAR SET PRECIO_DELEGACION = 5 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1);
|
||||
UPDATE HOSPEDAR SET PRECIO_ATLETA = 50000 WHERE (ID_HOTEL = 1 AND ID_DELEGACION = 1);
|
||||
|
||||
Reference in New Issue
Block a user