Trigger komplexer gestaltet
This commit is contained in:
parent
c90543094d
commit
fe96863703
|
@ -60,7 +60,7 @@ BEGIN
|
|||
END rooms;
|
||||
|
||||
CREATE OR REPLACE TRIGGER booking_created
|
||||
BEFORE INSERT OR UPDATE OR DELETE
|
||||
AFTER INSERT OR UPDATE OR DELETE
|
||||
ON BOOKINGROOM
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
|
@ -96,15 +96,28 @@ BEGIN
|
|||
END;
|
||||
|
||||
CREATE OR REPLACE TRIGGER total_price
|
||||
AFTER INSERT OR UPDATE ON BOOKING
|
||||
BEFORE INSERT OR UPDATE OR DELETE ON BOOKING
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
total_price NUMBER;
|
||||
nights NUMBER;
|
||||
nights NUMBER;
|
||||
BEGIN
|
||||
IF DELETING THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Buchung erfolgreich storniert');
|
||||
ELSIF UPDATING AND :NEW.COST < :OLD.COST THEN
|
||||
RAISE_APPLICATION_ERROR(-20111, 'Buchungen dürfen nicht vergünstigt werden!');
|
||||
nights := :NEW.DEPARTUREDATE - :NEW.ARRIVALDATE;
|
||||
IF nights < 1 THEN
|
||||
RAISE_APPLICATION_ERROR(-20111, 'Invalide Dauer: Mindestens eine Nacht muss gebucht werden!');
|
||||
END IF;
|
||||
ELSE
|
||||
nights := :NEW.DEPARTUREDATE - :NEW.ARRIVALDATE;
|
||||
IF nights < 1 THEN
|
||||
RAISE_APPLICATION_ERROR(-20111, 'Invalide Dauer: Mindestens eine Nacht muss gebucht werden!');
|
||||
END IF;
|
||||
total_price := nights * :NEW.COST;
|
||||
dbms_output.put_line('Gesamtpreis:');
|
||||
dbms_output.put_line(total_price);
|
||||
END IF;
|
||||
END;
|
||||
|
||||
|
|
|
@ -47,4 +47,7 @@ ROLLBACK;
|
|||
-- Gesamtpreise werden angezeigt
|
||||
INSERT INTO BOOKING VALUES (234, TO_DATE('2023-09-03', 'YYYY-MM-DD'), TO_DATE('2023-09-05', 'YYYY-MM-DD'), 65, 'No Pension', 0, 15);
|
||||
INSERT INTO BOOKING VALUES (456, TO_DATE('2023-09-06', 'YYYY-MM-DD'), TO_DATE('2023-10-01', 'YYYY-MM-DD'), 10, 'No Pension', 0, 15);
|
||||
UPDATE BOOKING SET COST = 5 WHERE BOOKINGID = 456;
|
||||
INSERT INTO BOOKING VALUES (789, TO_DATE('2023-09-06', 'YYYY-MM-DD'), TO_DATE('2023-09-06', 'YYYY-MM-DD'), 10, 'No Pension', 0, 15);
|
||||
DELETE FROM BOOKING WHERE BOOKINGID = 234;
|
||||
ROLLBACK;
|
||||
|
|
Loading…
Reference in a new issue