Advertisement
dzocesrce

[BNP] Triggers and other mysterious things

Feb 3rd, 2025
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 6.75 KB | None | 0 0
  1. 1. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутите „br_izlozbi_otvoreno“ и „br_izlozbi_zatvoreno“ при додавање на записите од кои зависи нивната вредност.
  2.  
  3. CREATE TRIGGER TR_otvoreno
  4. AFTER INSERT ON Izlozeni
  5. FOR EACH ROW
  6. BEGIN
  7. UPDATE Umetnicko_delo
  8. SET br_izlozbi_otvoreno=br_izlozbi_otvoreno+1
  9. WHERE shifra=NEW.shifra_d AND NEW.ime_i IN (SELECT DISTINCT Izlozba.ime_i FROM Izlozba JOIN Muzej ON Izlozba.shifra_muzej=Muzej.shifra WHERE tip='otvoreno');
  10. END;
  11.  
  12. CREATE TRIGGER TR_zatvoreno
  13. AFTER INSERT ON Izlozeni
  14. FOR EACH ROW
  15. BEGIN
  16. UPDATE Umetnicko_delo
  17. SET br_izlozbi_zatvoreno=br_izlozbi_zatvoreno+1
  18. WHERE shifra=NEW.shifra_d AND NEW.ime_i IN (SELECT DISTINCT Izlozba.ime_i FROM Izlozba JOIN Muzej ON Izlozba.shifra_muzej=Muzej.shifra WHERE tip='zatvoreno');
  19. END;
  20.  
  21. 2. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутот „br_bendovi“ при зачленување во бенд.
  22.  
  23. CREATE TRIGGER TR_br_bendovi
  24. AFTER INSERT ON Muzicar_bend
  25. FOR EACH ROW
  26. BEGIN
  27. UPDATE Muzicar
  28. SET br_bendovi=br_bendovi+1
  29. WHERE id=NEW.id_muzicar;
  30. END;
  31.  
  32. 3. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутот „prosechna_ocena“ при додавање на записите од кои зависи неговата вредност.
  33.  
  34. CREATE TRIGGER TR_zapisi
  35. AFTER INSERT ON Preporaka
  36. FOR EACH ROW
  37. WHEN NEW.naslov IS NOT NULL AND NEW.ocena IS NOT NULL
  38. BEGIN
  39.     UPDATE Video_zapis
  40.     SET prosechna_ocena= (SELECT AVG(Preporaka.ocena) FROM Preporaka WHERE Preporaka.naslov=NEW.naslov GROUP BY Preporaka.naslov);
  41. END;
  42.  
  43. 4. Сакаме да водиме евиденција за соседните градови на град кој е избришан од системот.
  44. Не сакаме да водиме евиденција за посетите на места на корисници кои се избришани од системот.
  45.  
  46. CREATE TRIGGER TR_sosedi
  47. AFTER DELETE ON Grad
  48. FOR EACH ROW
  49. BEGIN
  50.     UPDATE Sosedi
  51.     SET grad2= NULL
  52.     WHERE grad2=OLD.id_mesto;
  53.     UPDATE Sosedi
  54.     SET grad1= NULL
  55.     WHERE grad1=OLD.id_mesto;
  56. END;
  57.  
  58. CREATE TRIGGER TR_poseti
  59. AFTER DELETE ON Korisnik
  60. FOR EACH ROW
  61. BEGIN
  62.     DELETE FROM Poseta
  63.     WHERE kor_ime=OLD.kor_ime;
  64. END;
  65.  
  66. 5. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутот „broj_poseti“ при додавање на записите од кои зависи нивната вредност.
  67.  
  68. CREATE TRIGGER TR_mesta
  69. AFTER INSERT ON Poseta
  70. FOR EACH ROW
  71. BEGIN
  72.     UPDATE Mesto
  73.     SET broj_poseti=(SELECT COUNT(DISTINCT kor_ime) FROM Poseta WHERE Poseta.id_mesto=NEW.id_mesto)
  74.     WHERE id=NEW.id_mesto;
  75. END;
  76.  
  77. 6. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутот „broj_poseti“ при додавање на записите од кои зависи нивната вредност.
  78.  
  79. CREATE TRIGGER TR_poseti
  80. AFTER INSERT ON Poseta
  81. FOR EACH ROW
  82. --WHEN NEW.id_mesto NOT EXISTS (SELECT DISTINCT id_mesto FROM Poseta WHERE kor_ime=NEW.kor_ime)
  83. BEGIN
  84.     UPDATE Korisnik
  85.     SET broj_poseti=(SELECT COUNT(DISTINCT id_mesto) FROM Poseta WHERE Poseta.id_mesto=NEW.id_mesto)
  86.     WHERE kor_ime=NEW.kor_ime;
  87. END;
  88.  
  89. 7. Да се напише соодветниот тригер/и за одржување на конзистентноста на атрибутот „brNarachki“ при додавање, бришење или ажурирање на записите од кои зависи неговата вредност.
  90.  
  91. CREATE TRIGGER TR_naracki1
  92. AFTER INSERT ON Narachka
  93. FOR EACH ROW
  94. --WHEN NEW.marketID IS NOT NULL
  95. BEGIN
  96.     UPDATE Market
  97.     SET brNarachki=brNarachki+1
  98.     WHERE ID=NEW.marketID;
  99. END;
  100.  
  101. CREATE TRIGGER TR_naracki2
  102. AFTER DELETE ON Narachka
  103. FOR EACH ROW
  104. --WHEN NEW.marketID IS NOT NULL
  105. BEGIN
  106.     UPDATE Market
  107.     SET brNarachki=brNarachki-1
  108.     WHERE ID=OLD.marketID;
  109. END;
  110.  
  111. CREATE TRIGGER TR_naracki3
  112. AFTER UPDATE ON Narachka
  113. FOR EACH ROW
  114. --WHEN NEW.marketID IS NOT NULL
  115. BEGIN
  116.     UPDATE Market
  117.     SET brNarachki=brNarachki-1
  118.     WHERE ID=OLD.marketID;
  119.     UPDATE Market
  120.     SET brNarachki=brNarachki+1
  121.     WHERE ID=NEW.marketID;
  122. END;
  123.  
  124. 8. Да се напише соодветниот тригер/и за одржување на конзистентноста на атрибутот „brSpecijaliteti“ при додавање, бришење или ажурирање на записите од кои зависи неговата вредност.
  125.  
  126. CREATE TRIGGER TR_naracki1
  127. AFTER INSERT ON Prodazhba
  128. FOR EACH ROW
  129. --WHEN NEW.marketID IS NOT NULL
  130. BEGIN
  131.     UPDATE Market
  132.     SET brSpecijaliteti=brSpecijaliteti+1
  133.     WHERE ID=NEW.marketID;
  134. END;
  135.  
  136. CREATE TRIGGER TR_naracki2
  137. AFTER DELETE ON Prodazhba
  138. FOR EACH ROW
  139. --WHEN NEW.marketID IS NOT NULL
  140. BEGIN
  141.     UPDATE Market
  142.     SET brSpecijaliteti=brSpecijaliteti-1
  143.     WHERE ID=OLD.marketID;
  144. END;
  145.  
  146. CREATE TRIGGER TR_naracki3
  147. AFTER UPDATE ON Prodazhba
  148. FOR EACH ROW
  149. --WHEN NEW.marketID IS NOT NULL
  150. BEGIN
  151.     UPDATE Market
  152.     SET brSpecijaliteti=brSpecijaliteti-1
  153.     WHERE ID=OLD.marketID;
  154.     UPDATE Market
  155.     SET brSpecijaliteti=brSpecijaliteti+1
  156.     WHERE ID=NEW.marketID;
  157. END;
  158.  
  159. 9. Да се напише соодветниот тригер/и за одржување на конзистентноста на атрибутот „brBileti“ при додавање или бришење на записите од кои зависи неговата вредност.
  160.  
  161. CREATE TRIGGER TR_bileti
  162. AFTER INSERT ON Bilet
  163. FOR EACH ROW
  164. WHEN NEW.patnik_embg IS NOT NULL
  165. BEGIN
  166.     UPDATE Patnik
  167.     SET brBileti=brBileti+1
  168.     WHERE embg=NEW.patnik_embg;
  169. END;
  170.  
  171. CREATE TRIGGER TR_bileti2
  172. AFTER DELETE ON Bilet
  173. FOR EACH ROW
  174. BEGIN
  175.     UPDATE Patnik
  176.     SET brBileti=brBileti-1
  177.     WHERE embg=OLD.patnik_embg;
  178. END;
  179.  
  180. 10. Да се напише/ат соодветниот/те тригер/и за одржување на конзистентноста на атрибутот „broj_preporaki“ при додавање на записите од кои зависи неговата вредност.
  181.  
  182. CREATE TRIGGER TR_preporaki
  183. AFTER INSERT ON Preporaka
  184. FOR EACH ROW
  185. --WHEN NEW.k_ime_od
  186. BEGIN
  187.     UPDATE Korisnik
  188.     SET broj_preporaki=broj_preporaki+1
  189.     WHERE k_ime=NEW.k_ime_od OR k_ime=NEW.k_ime_na;
  190. END;
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement