Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE TRIGGER dodawanie_rezerwacji_trigger
  2.     AFTER INSERT ON REZERWACJE
  3.     FOR EACH ROW
  4. BEGIN
  5.     INSERT INTO REZERWACJE_LOG( ID_REZERWACJI, STATUS) VALUES (:NEW.NR_REZERWACJI, :NEW.STATUS);
  6. END;
  7.  
  8. CREATE OR REPLACE TRIGGER edytowanie_rezerwacji_trigger
  9.     AFTER UPDATE
  10.     ON REZERWACJE
  11.     FOR EACH ROW
  12. BEGIN
  13.     INSERT INTO REZERWACJE_LOG (ID_REZERWACJI, STATUS)
  14.     VALUES (:NEW.NR_REZERWACJI, :NEW.STATUS);
  15. END;
  16.  
  17. CREATE OR REPLACE TRIGGER usuwanie_rezerwacji_trigger
  18.     BEFORE DELETE
  19.     ON REZERWACJE
  20.     FOR EACH ROW
  21. BEGIN
  22.     RAISE_APPLICATION_ERROR(-20001, 'Nie mozesz usunac rezerwacji');
  23. END;
  24.  
  25. CREATE OR REPLACE PROCEDURE dodaj_rezerwacje_3(idWycieczki int, idOsoby int)
  26. AS
  27.     COUNT int;
  28.     dataWycieczki  DATE;
  29. BEGIN
  30.     SELECT COUNT(*) INTO COUNT FROM OSOBY WHERE ID_OSOBY = idOsoby;
  31.     IF COUNT = 0 THEN
  32.         RAISE_APPLICATION_ERROR(-20001, 'Nie znaleziono osoby o id=' || idOsoby);
  33.     END IF;
  34.     SELECT COUNT(*) INTO COUNT FROM WYCIECZKI WHERE ID_WYCIECZKI = idWycieczki;
  35.     IF COUNT = 0 THEN
  36.         RAISE_APPLICATION_ERROR(-20001, 'Nie znaleziono wycieczki o id =' || idWycieczki);
  37.     END IF;
  38.     SELECT DATA INTO dataWycieczki FROM WYCIECZKI WHERE ID_WYCIECZKI = idWycieczki;
  39.     IF dataWycieczki < CURRENT_DATE THEN
  40.         RAISE_APPLICATION_ERROR(-20001, 'Wycieczka juz sie odbyla');
  41.     END IF;
  42.     SELECT LICZBA_WOLNYCH_MIEJSC INTO COUNT FROM wycieczki_miejsca WHERE ID_WYCIECZKI = idWycieczki;
  43.     IF COUNT <= 0 THEN
  44.         RAISE_APPLICATION_ERROR(-20001, 'Brak wolnych miejsc');
  45.     END IF;
  46.     INSERT INTO REZERWACJE(ID_WYCIECZKI, ID_OSOBY, STATUS) VALUES (idWycieczki, idOsoby, 'N');
  47.     UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC - 1 WHERE ID_WYCIECZKI = idWycieczki;
  48. END;
  49.  
  50. CREATE OR REPLACE PROCEDURE zmien_status_rezerwacji_3(idRezerwacji int, statusDocelowy CHAR)
  51. AS
  52.     COUNT  int;
  53.     statusObecny CHAR;
  54. BEGIN
  55.     SELECT COUNT(*) INTO COUNT FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji;
  56.     IF COUNT = 0 THEN
  57.         RAISE_APPLICATION_ERROR(-20001, 'Rezerwacja o id=' || idRezerwacji || ' nie istnieje');
  58.     END IF;
  59.     SELECT STATUS INTO statusObecny FROM REZERWACJE WHERE NR_REZERWACJI = idRezerwacji;
  60.     IF statusObecny = 'A' THEN
  61.         SELECT LICZBA_WOLNYCH_MIEJSC INTO COUNT FROM wycieczki_miejsca
  62.         WHERE ID_WYCIECZKI = (SELECT r.ID_WYCIECZKI FROM REZERWACJE r WHERE r.NR_REZERWACJI = idRezerwacji);
  63.         IF COUNT <= 0 THEN
  64.             RAISE_APPLICATION_ERROR(-20001, 'Brak wolnych miejsc');
  65.         END IF;
  66.     END IF;
  67.     UPDATE REZERWACJE SET STATUS = statusDocelowy WHERE NR_REZERWACJI = idRezerwacji;
  68.     IF statusDocelowy = 'A' THEN
  69.         UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC + 1
  70.         WHERE ID_WYCIECZKI = (SELECT ID_WYCIECZKI FROM REZERWACJE  WHERE NR_REZERWACJI = idRezerwacji);
  71.         ELSE
  72.         UPDATE WYCIECZKI SET LICZBA_WOLNYCH_MIEJSC = LICZBA_WOLNYCH_MIEJSC - 1
  73.         WHERE ID_WYCIECZKI = (SELECT ID_WYCIECZKI FROM REZERWACJE  WHERE NR_REZERWACJI = idRezerwacji);
  74.     END IF;
  75. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement