Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Vježba 9 – VIEWS, STORED PROCEDURE, TRIGGERS
- --NAPOMENA: Vježba se radi nad bazom podataka Pubs.
- --1. Kreirati proceduru za upis podataka u tabelu authors. Izvršiti proceduru, tj. dodati novog autora sa testnim podacima.
- USE pubs
- CREATE PROCEDURE dodaj_autora
- AS
- INSERT INTO authors
- VALUES ('133-53-9929','Smith','Mike','283 555-3353','Neverstreet','Newcity','HC',99966,'True')
- EXEC dodaj_autora
- SELECT *
- FROM authors
- DROP PROCEDURE dodaj_autora
- --2. Kreirati proceduru za izmjenu podataka u tabeli authors. Izvršiti proceduru, tj. izmijeniti određene podatke prethodno dodanog autora.
- USE pubs
- CREATE PROCEDURE izmjeni_autora
- AS
- UPDATE authors
- SET au_fname='George', au_lname='Martin'
- WHERE au_id='133-53-9929'
- EXEC izmjeni_autora
- SELECT *
- FROM authors
- WHERE au_id='133-53-9929'
- DROP PROCEDURE izmjeni_autora
- --3. Kreirati proceduru za brisanje zapisa iz tabele authors. Izvršiti proceduru, tj. obrisati prethodno dodanog autora.
- USE pubs
- CREATE PROCEDURE brisi_autora
- AS
- DELETE FROM authors
- WHERE au_id='133-53-9929'
- EXEC brisi_autora
- SELECT *
- FROM authors
- WHERE au_id='133-53-9929'
- DROP PROCEDURE brisi_autora
- --4. Izmijeniti proceduru kreiranu u zadatku 1. U istoj proceduri, dodanog autora pridružiti kao koautora na dvije postojeće knjige.
- -- U proceduri koristiti dvije INSERT komande (Tabele: authors, titleauthor). Izvršiti proceduru, tj. dodati novog autora sa njegovim knjigama.
- USE pubs
- CREATE PROCEDURE dodaj_autora
- AS
- INSERT INTO authors
- VALUES ('133-53-9929','Smith','Mike','283 555-3353','Neverstreet','Newcity','HC',99966,'True')
- INSERT INTO titleauthor
- VALUES('133-53-9929','PS3333',2,100)
- EXEC dodaj_autora
- SELECT *
- FROM authors
- DROP PROCEDURE dodaj_autora
- --5. Kreirati pogled (view) sa sljedećim podacima: naziv izdavača, ime i prezime autora (odvojeno), naziv knjige, zarada od prodaje knjige/a.
- USE pubs
- CREATE VIEW autori
- AS
- 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'
- FROM publishers AS p JOIN titles AS t
- ON p.pub_id=t.pub_id JOIN titleauthor AS ta
- ON t.title_id=ta.title_id JOIN authors AS a
- ON ta.au_id=a.au_id JOIN sales AS S
- ON S.title_id=t.title_id
- SELECT *
- FROM autori
- DROP VIEW autori
- --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.
- -- Koristiti view kreiran u zadatku 5.
- CREATE PROCEDURE zarada
- @imeautora nvarchar(20)='nema vrijednost',
- @prezimeautora nvarchar(40)='nema vrijednost',
- @nazivizdavaca nvarchar(40)='nema vrijednost',
- @nazivknjige nvarchar(80)='nema vrijednost'
- AS
- 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'
- FROM publishers AS p JOIN titles AS t
- ON p.pub_id=t.pub_id JOIN titleauthor AS ta
- ON t.title_id=ta.title_id JOIN authors AS a
- ON ta.au_id=a.au_id JOIN sales AS S
- ON S.title_id=t.title_id
- WHERE a.au_fname LIKE @imeautora OR a.au_lname LIKE @prezimeautora OR p.pub_name LIKE @nazivizdavaca OR t.title LIKE @nazivknjige
- EXEC zarada @nazivknjige='The Gourmet Microwave'
- DROP PROCEDURE zarada
- --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.
- -- Koristiti komandu PRINT za ispis poruke.
- CREATE TRIGGER nodelete
- ON titleauthor
- INSTEAD OF DELETE
- AS
- PRINT 'Zabranjeno brisanje podataka u tabeli author'
- ROLLBACK
- DELETE FROM titleauthor
- WHERE au_id='213-46-8915'
- DROP TRIGGER nodelete
- DELETE FROM titleauthor
- WHERE au_id='213-46-8915'
- --8. Kreirati proceduru koja briše autora dodanog u zadatku 4, zajedno sa svim njegovim knjigama. Izvršiti proceduru, tj. pokušati obrisati autora.
- -- Trigger kreiran u zadatku 7 treba da spriječi izvršavanje ove procedure.
- CREATE PROCEDURE brisiautora
- AS
- DELETE titleauthor
- FROM authors AS a JOIN titleauthor AS ta
- ON a.au_id=ta.au_id
- WHERE a.au_id='133-53-9929'
- DELETE authors
- FROM authors
- WHERE au_id='133-53-9929'
- EXEC brisiautora
- SELECT *
- FROM titles AS t JOIN titleauthor AS ta
- ON t.title_id=ta.title_id JOIN authors AS a
- ON a.au_id=ta.au_id
- WHERE a.au_id='133-53-9929'
Add Comment
Please, Sign In to add comment