Uvod

U prethodnoj lekciji upoznali smo se sa pojmom pogleda (VIEW) i naučili da on predstavlja virtuelnu tabelu zasnovanu na SELECT upitu.

Sada se postavlja važno pitanje:

Da li možemo menjati podatke preko pogleda?

    Odgovor je:  Možemo – ali ne uvek.


1. Osnovna ideja

Kada radimo:

UPDATE naziv_pogleda
SET kolona = vrednost

mi zapravo:  menjamo podatke u originalnoj tabeli, a ne u samom pogledu.

Dakle:  VIEW je samo "prozor" – stvarni podaci su u tabeli.


2. Kada promena podataka kroz pogled NIJE DOZVOLJENA?

 U slučaju da se koriste složeni upiti u kojima se koriste 

✘ DISTINCT    ✘ agregatne funkcije  ✘ GROUP BY 


3. Primer – dozvoljeno ažuriranje

Kreiranje pogleda:

CREATE VIEW vw_Glumci
AS
SELECT GlumacID, Ime, Prezime
FROM Glumac;

UPDATE preko pogleda:

UPDATE vw_Glumci
SET Ime = 'Petar'
WHERE GlumacID = 1;

✔ Ova promena će biti izvršena u tabeli Glumac


4. INSERT kroz VIEW

INSERT INTO vw_Glumci (GlumacID, Ime, Prezime)
VALUES (200, 'Marko', 'Marković');

✔ Novi red se dodaje u tabelu Glumac


5. DELETE kroz VIEW

DELETE FROM vw_Glumci
WHERE GlumacID = 200;

✔ Briše podatak iz osnovne tabele


6. Primer – nedozvoljeno ažuriranje

create view vwBrojFilmovaPoZanru
as
select z.NazivZanra, Count(f.Naziv) as BrojFilmova 
from Zanr z, Film f
where z.ZanrID=f.ZanrID
group by z.NazivZanra;

Pokušaj UPDATE:

update vwBrojFilmovaPoZanru
set NazivZanra='aakcija'
where BrojFilmova=3

❌ Ovo neće raditi (greška), jer pogled koristi agregatnu funkciju (count)


Zadaci

Zadatak 1 - Kreirati pogled nad tabelom Film (Naziv, DatumIzlaska).

Zadatak 2 - Promeniti naziv jednog filma preko pogleda.

Zadatak 3 - Dodati novi film preko pogleda.

Zadatak 4 - Obrisati film preko pogleda.

Zadatak 5 - Napraviti pogled sa JOIN i pokušati UPDATE – objasniti grešku.

Dodatni zadaci za vežbu

Zadatak 1 - Kreirati pogled nad tabelom Glumac (Ime, Prezime).

Zadatak 2 - Promeniti prezime jednog glumca preko pogleda.

Zadatak 3 - Dodati novog glumca preko pogleda.

Zadatak 4 - Obrisati glumca preko pogleda.

Zadatak 5 - Objasniti:

  • Zašto neki pogledi ne dozvoljavaju izmene?

  • Kada je bezbedno koristiti VIEW za ažuriranje?


Zadaci za rad kod kuće (ako ne stignemo na času)

Zadatak 1 - Kreirati pogled nad tabelom Producent.

Zadatak 2 - Dodati novog producenta preko pogleda.

Zadatak 3 - Napraviti pogled sa JOIN i pokušati INSERT.

Zadatak 4 - Objasniti razliku:

  • ažuriranje preko VIEW

  • ažuriranje direktno nad tabelom


Rešenja

Zadatak 1

CREATE VIEW vw_Filmovi
AS
SELECT Naziv, DatumIzlaska
FROM Film;

Zadatak 2

UPDATE vw_Filmovi
SET Naziv = 'Novi naziv'
WHERE Naziv = 'Kum';

Zadatak 3

INSERT INTO vw_Filmovi (Naziv, DatumIzlaska)
VALUES ('Novi film', '2020-01-01');

Zadatak 4

DELETE FROM vw_Filmovi
WHERE Naziv = 'Novi film';

Poslednja izmena: петак, 24. април 2026, 14:54