uraharadono

Vježba 9

Sep 6th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Vježba 9 – VIEWS, STORED PROCEDURE, TRIGGERS
  2.  
  3. --NAPOMENA: Vježba se radi nad bazom podataka Pubs.
  4. --1. Kreirati proceduru za upis podataka u tabelu authors. Izvršiti proceduru, tj. dodati novog autora sa testnim podacima.
  5. USE pubs
  6. CREATE PROCEDURE  dodaj_autora
  7. AS
  8. INSERT INTO authors
  9. VALUES ('133-53-9929','Smith','Mike','283 555-3353','Neverstreet','Newcity','HC',99966,'True')
  10. EXEC dodaj_autora
  11.  
  12. SELECT *
  13. FROM authors
  14.  
  15. DROP PROCEDURE dodaj_autora
  16.  
  17. --2. Kreirati proceduru za izmjenu podataka u tabeli authors. Izvršiti proceduru, tj. izmijeniti određene podatke prethodno dodanog autora.
  18. USE pubs
  19. CREATE PROCEDURE izmjeni_autora
  20. AS
  21. UPDATE authors
  22. SET au_fname='George', au_lname='Martin'
  23. WHERE au_id='133-53-9929'
  24. EXEC izmjeni_autora
  25.  
  26. SELECT *
  27. FROM authors
  28. WHERE au_id='133-53-9929'
  29.  
  30. DROP PROCEDURE izmjeni_autora
  31.  
  32. --3. Kreirati proceduru za brisanje zapisa iz tabele authors. Izvršiti proceduru, tj. obrisati prethodno dodanog autora.
  33. USE pubs
  34. CREATE PROCEDURE brisi_autora
  35. AS
  36. DELETE FROM authors
  37. WHERE au_id='133-53-9929'
  38.  
  39. EXEC brisi_autora
  40.  
  41. SELECT *
  42. FROM authors
  43. WHERE au_id='133-53-9929'
  44.  
  45. DROP PROCEDURE brisi_autora
  46.  
  47. --4. Izmijeniti proceduru kreiranu u zadatku 1. U istoj proceduri, dodanog autora pridružiti kao koautora na dvije postojeće knjige.
  48. --   U proceduri koristiti dvije INSERT komande (Tabele: authors, titleauthor). Izvršiti proceduru, tj. dodati novog autora sa njegovim knjigama.
  49. USE pubs
  50. CREATE PROCEDURE  dodaj_autora
  51. AS
  52. INSERT INTO authors
  53. VALUES ('133-53-9929','Smith','Mike','283 555-3353','Neverstreet','Newcity','HC',99966,'True')
  54. INSERT INTO titleauthor
  55. VALUES('133-53-9929','PS3333',2,100)
  56. EXEC dodaj_autora
  57.  
  58. SELECT *
  59. FROM authors
  60.  
  61. DROP PROCEDURE dodaj_autora
  62.  
  63. --5. Kreirati pogled (view) sa sljedećim podacima: naziv izdavača, ime i prezime autora (odvojeno), naziv knjige, zarada od prodaje knjige/a.
  64. USE pubs
  65. CREATE VIEW autori
  66. AS
  67. SELECT p.pub_name AS 'Naziv izdavaca',a.au_fname'Ime autora',a.au_lname'Prezime autora',t.title'Naziv knjige',s.qty*t.price AS 'Zarada od prodaje knjige'
  68. FROM publishers AS p JOIN titles AS t
  69. ON p.pub_id=t.pub_id JOIN titleauthor AS ta
  70. ON t.title_id=ta.title_id JOIN authors AS a
  71. ON ta.au_id=a.au_id JOIN sales AS S
  72. ON S.title_id=t.title_id
  73.  
  74. SELECT *
  75. FROM autori
  76.  
  77. DROP VIEW autori
  78.  
  79. --6. Kreirati proceduru koja prima sljedeće parametre: ime i prezime autora, naziv izdavača, naziv knjige. U zavisnosti od proslijeđenog parametra procedura treba da vrati zaradu od prodaje knjige/a.
  80. --   Koristiti view kreiran u zadatku 5.
  81. CREATE PROCEDURE zarada
  82. @imeautora nvarchar(20)='nema vrijednost',
  83. @prezimeautora nvarchar(40)='nema vrijednost',
  84. @nazivizdavaca nvarchar(40)='nema vrijednost',
  85. @nazivknjige nvarchar(80)='nema vrijednost'
  86. AS
  87. SELECT p.pub_name AS 'Naziv izdavaca',a.au_fname'Ime autora',a.au_lname'Prezime autora',t.title'Naziv knjige',s.qty*t.price AS 'Zarada od prodaje knjige'
  88. FROM publishers AS p JOIN titles AS t
  89. ON p.pub_id=t.pub_id JOIN titleauthor AS ta
  90. ON t.title_id=ta.title_id JOIN authors AS a
  91. ON ta.au_id=a.au_id JOIN sales AS S
  92. ON S.title_id=t.title_id
  93. WHERE a.au_fname LIKE @imeautora OR a.au_lname LIKE @prezimeautora OR p.pub_name LIKE @nazivizdavaca OR t.title LIKE @nazivknjige
  94.  
  95. EXEC zarada @nazivknjige='The Gourmet Microwave'
  96.  
  97. DROP PROCEDURE zarada
  98.  
  99. --7. Kreirati trigger (INSTEAD OF) koji će spriječiti izvršavanje DELETE komande nad tabelom titleauthor. Ukoliko se pokuša obrisati zapis u tabeli titleauthor ispisati odgovarajuću poruku.
  100. --   Koristiti komandu PRINT za ispis poruke.
  101. CREATE TRIGGER nodelete
  102. ON titleauthor
  103. INSTEAD OF DELETE
  104. AS
  105. PRINT 'Zabranjeno brisanje podataka u tabeli author'
  106. ROLLBACK
  107.  
  108. DELETE FROM titleauthor
  109. WHERE au_id='213-46-8915'
  110.  
  111. DROP TRIGGER nodelete
  112.  
  113. DELETE FROM titleauthor
  114. WHERE au_id='213-46-8915'
  115.  
  116. --8. Kreirati proceduru koja briše autora dodanog u zadatku 4, zajedno sa svim njegovim knjigama. Izvršiti proceduru, tj. pokušati obrisati autora.
  117. --   Trigger kreiran u zadatku 7 treba da spriječi izvršavanje ove procedure.
  118. CREATE PROCEDURE brisiautora
  119. AS
  120. DELETE titleauthor
  121. FROM authors AS a JOIN titleauthor AS ta
  122. ON a.au_id=ta.au_id
  123. WHERE a.au_id='133-53-9929'
  124. DELETE authors
  125. FROM authors
  126. WHERE au_id='133-53-9929'
  127.  
  128. EXEC brisiautora
  129.  
  130. SELECT *
  131. FROM titles AS t JOIN titleauthor AS ta
  132. ON t.title_id=ta.title_id JOIN authors AS a
  133. ON a.au_id=ta.au_id
  134. WHERE a.au_id='133-53-9929'
Add Comment
Please, Sign In to add comment