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);