diff --git a/data.sql b/data.sql index 6a95aee..448f7ff 100644 --- a/data.sql +++ b/data.sql @@ -108,12 +108,12 @@ INSERT INTO "PRECOMPETENCIA" (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-0 INSERT INTO "PRECOMPETENCIA" (FECHA, COMPETENCIA, LUGAR) VALUES (TO_DATE('2020-10-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '4', '2'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('1', '1', TO_DATE('2020-05-21 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '1500000'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('1', '2', TO_DATE('2020-05-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-06-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '350000'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('2', '3', TO_DATE('2020-05-08 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-10 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '280000'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('3', '4', TO_DATE('2020-06-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-06-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '168000'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('4', '2', TO_DATE('2020-09-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-15 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '178000'); -INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO) VALUES ('5', '3', TO_DATE('2020-10-13 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-18 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '189000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('1', '1', TO_DATE('2020-05-21 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '1500000', '1500000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('1', '2', TO_DATE('2020-05-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-06-05 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '350000', '350000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('2', '3', TO_DATE('2020-05-08 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-05-10 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '280000', '280000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('3', '4', TO_DATE('2020-06-09 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-06-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '168000', '168000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('4', '2', TO_DATE('2020-09-12 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-15 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '178000', '178000'); +INSERT INTO "HOSPEDAR" (ID_HOTEL, ID_DELEGACION, FECHA_INICIO, FECHA_FIN, PRECIO_DELEGACION, PRECIO_ATLETA) VALUES ('5', '3', TO_DATE('2020-10-13 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2020-10-18 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '189000', '189000'); INSERT INTO "GANAR" (ID_ATLETA, ID_COMPETENCIA, ID_MEDALLA, FECHA, PUNTAJE) VALUES ('1', '1', '3', TO_DATE('2019-05-25 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '70'); diff --git a/trigger.sql b/trigger.sql index 93c061e..d3000c2 100644 --- a/trigger.sql +++ b/trigger.sql @@ -45,4 +45,30 @@ INSERT INTO "PARTICIPAR_PRECOMPETENCIA" (ID_PRECOMPETENCIA, ID_ATLETA, PUNTAJE, 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 */ \ No newline at end of file +/* Pregunta 5 */ + +CREATE OR REPLACE TRIGGER CALCULAR_VALOR_DELEGACION +BEFORE INSERT OR UPDATE +ON HOSPEDAR + +FOR EACH ROW +DECLARE + atletas DELEGACION.CANTIDAD_ATLETAS%TYPE; + +BEGIN + IF INSERTING THEN + SELECT CANTIDAD_ATLETAS INTO atletas + FROM DELEGACION WHERE (ID_DELEGACION = :NEW.ID_DELEGACION); + + :NEW.PRECIO_DELEGACION := atletas * :NEW.PRECIO_ATLETA; + ELSIF UPDATING THEN + SELECT CANTIDAD_ATLETAS INTO atletas + FROM DELEGACION WHERE (ID_DELEGACION = :NEW.ID_DELEGACION); + + :NEW.PRECIO_DELEGACION := 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);