View difference between Paste ID: v4HydynP and 4Zg7MFLb
SHOW: | | - or go back to the newest paste.
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'