Advertisement
Guest User

Kreiranje trigera skripta

a guest
Jan 10th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Kreiranje funkcije za trigger
  2.  
  3. // INSERT
  4. CREATE OR REPLACE FUNCTION noOfPassengers()
  5. RETURNS TRIGGER AS
  6. $$
  7. BEGIN
  8. NEW.no_of_passengers = (SELECT no_of_passengers FROM reservation
  9. WHERE flight_id = NEW.flight_id AND flight_category_id = NEW.flight_category_id AND
  10. client_id = NEW.client_id);
  11. RETURN NEW;
  12. END;
  13.  
  14. $$
  15. LANGUAGE 'plpgsql';
  16.  
  17. // UPDATE
  18. CREATE OR REPLACE FUNCTION reservationAfterUpdate()
  19. RETURNS TRIGGER AS
  20. $$
  21. BEGIN
  22. IF NEW.no_of_passengers <> OLD.no_of_passengers THEN
  23. UPDATE extra_service
  24. SET no_of_passengers = NEW.no_of_passengers
  25. WHERE flight_id = NEW.flight_id AND flight_category_id =
  26.  
  27. NEW.flight_category_id AND client_id = NEW.client_id;
  28. END IF;
  29. RETURN NEW;
  30. END;
  31. $$
  32. LANGUAGE 'plpgsql';
  33.  
  34. // EXCEPTION
  35. CREATE OR REPLACE FUNCTION extraServiceAfterUpdate()
  36. RETURNS TRIGGER AS
  37. $$
  38. BEGIN
  39. IF NEW.flight_id <> OLD.flight_id OR NEW.flight_category_id <> OLD.flight_category_id
  40. OR NEW.client_id <> OLD.client_id THEN
  41.  
  42. RAISE EXCEPTION 'You cannot update these columns';
  43. END IF;
  44. RETURN NEW;
  45. END;
  46. $$
  47. LANGUAGE 'plpgsql';
  48.  
  49. // Kreiranje triggera
  50.  
  51. CREATE TRIGGER after_reservation_update
  52. AFTER UPDATE ON reservation
  53. FOR EACH ROW
  54. EXECUTE PROCEDURE reservationAfterUpdate();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement