Advertisement
xlujiax

TRIGGER

Nov 15th, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.22 KB | None | 0 0
  1. CREATE TABLE RESERVA_PRUEBA
  2. (
  3. COD_RESERVA  NUMBER PRIMARY KEY,
  4. DESCRIPCION  VARCHAR2(50) NOT NULL,
  5. FECHA       TIMESTAMP NOT NULL,
  6. MONTO        INT NULL,
  7. HORAS INT NULL,
  8. COD_CLIENTE         NUMBER REFERENCES CLIENTE,
  9. COD_EMP                  VARCHAR2(30) REFERENCES EMPLEADO,
  10. COD_CANALCOM    NUMBER REFERENCES CANAL_COMUNICACION,
  11. SUB_TOTAL INT
  12. );
  13.  
  14. INSERT INTO RESERVA_PRUEBA VALUES(1, 'Reserva Familiar: 7 personas', '15-feb-18 11:01:11',20, 5, 0001, 'EMP1', 01,0);
  15. INSERT INTO RESERVA_PRUEBA VALUES(2, 'Reserva VIP2:(AMIGOS)', '15-mar-18 9:12:00',15, 0002, 3,'EMP2', 3,0);
  16.  
  17. CREATE OR REPLACE TRIGGER ACTUALIZA_SUBTOTAL
  18. BEFORE INSERT OR DELETE OR UPDATE ON RESERVA_PRUEBA
  19. FOR EACH ROW
  20. BEGIN
  21.   IF INSERTING THEN
  22.   :NEW.SUB_TOTAL:=:NEW.MONTO * :NEW.HORAS;
  23.   END IF;
  24.   IF UPDATING THEN
  25.     IF :OLD.HORAS < :NEW.HORAS THEN
  26.       :NEW.SUB_TOTAL:=:NEW.MONTO * :NEW.HORAS;
  27.     ELSE
  28.       RAISE_APPLICATION_ERROR (-20999, 'Horas Añadidas no pueden ser menor a las ya consumidas');
  29.     END IF;
  30.   END IF;
  31. END;
  32.  
  33. INSERT INTO RESERVA_PRUEBA VALUES(3, 'Reserva para:1 persona', '15-nov-18 8:12:12',10, 4,2, 'EMP2',2,0);
  34.  
  35. UPDATE RESERVA_PRUEBA SET HORAS = 3 WHERE COD_RESERVA = 2;
  36. UPDATE RESERVA_PRUEBA SET HORAS = 2 WHERE COD_RESERVA = 2;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement