Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. DROP FUNCTION IF EXISTS f_lopeta_teenus() CASCADE;
  2.  
  3. CREATE OR REPLACE FUNCTION f_lopeta_teenus()
  4. RETURNS trigger AS $$
  5. BEGIN
  6. RAISE EXCEPTION 'Lopetada saab ainult seisundis "Aktiivne"
  7. voi "Mitteaktiivne" teenust!';
  8. RETURN NULL;
  9. END;
  10. $$ LANGUAGE plpgsql;
  11.  
  12. COMMENT ON FUNCTION f_lopeta_teenus() IS 'See trigeri funktsioon aitab realiseerida ärireeglit: teenust saab lõpetada vaid siis, kui teenus on seisundis “aktiivne” või “mitteaktiivne.';
  13.  
  14. DROP TRIGGER IF EXISTS trig_lopeta_teenus ON Teenus CASCADE;
  15.  
  16. CREATE TRIGGER trig_lopeta_teenus BEFORE UPDATE OF teenuse_seisundi_liik_kood ON Teenus
  17. FOR EACH ROW WHEN (OLD.teenuse_seisundi_liik_kood NOT IN (2,3) AND NEW.teenuse_seisundi_liik_kood=4) EXECUTE
  18. PROCEDURE f_lopeta_teenus();
  19.  
  20. COMMENT ON TRIGGER trig_lopeta_teenus ON Teenus IS 'See trigeri funktsioon aitab realiseerida ärireeglit: teenust saab lõpetada vaid siis, kui teenus on seisundis “aktiivne” või “mitteaktiivne.';
  21.  
  22.  
  23.  
  24. DROP FUNCTION IF EXISTS f_lopeta_teenus(p_versioon TEXT, p_teenus_kood Teenus.teenus_kood%TYPE) CASCADE;
  25.  
  26. CREATE OR REPLACE FUNCTION f_lopeta_teenus(p_versioon TEXT, p_teenus_kood Teenus.teenus_kood%TYPE)
  27. RETURNS Teenus.teenus_kood%TYPE AS $$
  28. UPDATE Teenus SET teenuse_seisundi_liik_kood=4 WHERE
  29. teenus_kood=p_teenus_kood AND xmin=p_versioon::xid
  30. RETURNING teenus_kood;
  31. $$ LANGUAGE sql SECURITY DEFINER
  32. SET search_path = public, pg_temp;
  33.  
  34. COMMENT ON FUNCTION f_lopeta_teenus(p_versioon TEXT, p_teenus_kood Teenus.teenus_kood%TYPE)
  35. IS 'Optimistlik lähenemine.
  36. See funktsioon realiseerib andmebaasioperatsiooni OP5.
  37. Selle funktsiooni abil viiakse teenus lõpetatud olekusse.
  38. See tähendab, et antud teenust kingaparandus sellisel kujul enam ei paku.
  39. Teenus peab olema seisundis aktiivne=2 või mitteaktiivne=3.
  40. Parameeter p_versioon on muudetava rea versioon ja p_teenus_kood oodatav väärtus on lõpetatava teenuse identifikaator.
  41. Funktsioon tagastab õnnestumise korral teenuse koodi.';
  42.  
  43.  
  44. DROP FUNCTION IF EXISTS f_lopeta_teenus(p_teenus_kood Teenus.teenus_kood%TYPE) CASCADE;
  45.  
  46. CREATE OR REPLACE FUNCTION f_lopeta_teenus(p_teenus_kood Teenus.teenus_kood%TYPE)
  47. RETURNS Teenus.teenus_kood%TYPE AS $$
  48. UPDATE Teenus SET teenuse_seisundi_liik_kood=4 WHERE
  49. teenus_kood=p_teenus_kood
  50. RETURNING teenus_kood;
  51. $$ LANGUAGE sql SECURITY DEFINER
  52. SET search_path = public, pg_temp;
  53.  
  54. COMMENT ON FUNCTION f_lopeta_teenus(p_teenus_kood Teenus.teenus_kood%TYPE)
  55. IS 'See funktsioon realiseerib andmebaasioperatsiooni OP5.
  56. Selle funktsiooni abil viiakse teenus lõpetatud olekusse.
  57. See tähendab, et antud teenust kingaparandus sellisel kujul enam ei paku.
  58. Teenus peab olema seisundis aktiivne=2 või mitteaktiivne=3.
  59. Parameeter p_teenus_kood oodatav väärtus on lõpetatava teenuse identifikaator.
  60. Funktsioon tagastab õnnestumise korral teenuse koodi.';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement