Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE TRIGGER dodawanie_rezerwacji_trigger
- AFTER INSERT ON REZERWACJE
- FOR EACH ROW
- BEGIN
- INSERT INTO REZERWACJE_LOG( ID_REZERWACJI, STATUS) VALUES (:NEW.NR_REZERWACJI, :NEW.STATUS);
- END;
- CREATE OR REPLACE TRIGGER edytowanie_rezerwacji_trigger
- AFTER UPDATE
- ON REZERWACJE
- FOR EACH ROW
- BEGIN
- INSERT INTO REZERWACJE_LOG (ID_REZERWACJI, STATUS)
- VALUES (:NEW.NR_REZERWACJI, :NEW.STATUS);
- END;
- CREATE OR REPLACE TRIGGER usuwanie_rezerwacji_trigger
- BEFORE DELETE
- ON REZERWACJE
- FOR EACH ROW
- BEGIN
- RAISE_APPLICATION_ERROR(-20001, 'Nie mozesz usunac rezerwacji');
- END;
- CREATE OR REPLACE PROCEDURE dodaj_rezerwacje_3(idWycieczki int, idOsoby int)
- AS
- COUNT int;
- dataWycieczki DATE;
- BEGIN
- SELECT COUNT(*) INTO COUNT FROM OSOBY WHERE ID_OSOBY = idOsoby;
- IF COUNT = 0 THEN
- RAISE_APPLICATION_ERROR(-20001, 'Nie znaleziono osoby o id=' || idOsoby);
- END IF;
- SELECT COUNT(*) INTO COUNT FROM WYCIECZKI WHERE ID_WYCIECZKI = idWycieczki;
- IF COUNT = 0 THEN
- RAISE_APPLICATION_ERROR(-20001, 'Nie znaleziono wycieczki o id =' || idWycieczki);
- END IF;
- SELECT DATA INTO dataWycieczki FROM WYCIECZKI WHERE ID_WYCIECZKI = idWycieczki;
- IF dataWycieczki < CURRENT_DATE THEN
- RAISE_APPLICATION_ERROR(-20001, 'Wycieczka juz sie odbyla');
- END IF;
- SELECT LICZBA_WOLNYCH_MIEJSC INTO COUNT FROM wycieczki_miejsca WHERE ID_WYCIECZKI = idWycieczki;
- IF COUNT <= 0 THEN
- RAISE_APPLICATION_ERROR(-20001, 'Brak wolnych miejsc');
- END IF;
- INSERT INTO REZERWACJE(ID_WYCIECZKI, ID_OSOBY, STATUS) VALUES (idWycieczki, idOsoby, 'N');
- UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC - 1 WHERE ID_WYCIECZKI = idWycieczki;
- END;
- CREATE OR REPLACE PROCEDURE zmien_status_rezerwacji_3(idRezerwacji int, statusDocelowy CHAR)
- AS
- COUNT int;
- statusObecny CHAR;
- BEGIN
- SELECT COUNT(*) INTO COUNT FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji;
- IF COUNT = 0 THEN
- RAISE_APPLICATION_ERROR(-20001, 'Rezerwacja o id=' || idRezerwacji || ' nie istnieje');
- END IF;
- SELECT STATUS INTO statusObecny FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji;
- IF statusObecny = 'A' THEN
- SELECT LICZBA_WOLNYCH_MIEJSC INTO COUNT FROM wycieczki_miejsca
- WHERE ID_WYCIECZKI = (SELECT r.ID_WYCIECZKI FROM REZERWACJE r WHERE r.NR_REZERWACJI = idRezerwacji);
- IF COUNT <= 0 THEN
- RAISE_APPLICATION_ERROR(-20001, 'Brak wolnych miejsc');
- END IF;
- END IF;
- UPDATE REZERWACJE SET STATUS = statusDocelowy WHERE NR_REZERWACJI = idRezerwacji;
- IF statusDocelowy = 'A' THEN
- UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC + 1
- WHERE ID_WYCIECZKI = (SELECT ID_WYCIECZKI FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji);
- ELSE
- UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC - 1
- WHERE ID_WYCIECZKI = (SELECT ID_WYCIECZKI FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji);
- END IF;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement