--zbog okidaca postaviti da je @ oznaka za kraj naredbe u skriptu --za izvrsavanje preko terminala: db2 -td@ -f putanja_do_skripta --1 --create table predmet_student ( -- idpredmeta integer, -- studenti smallint --)@ --insert into predmet_student --select idpredmeta, 5 --from da.PREDMETPROGRAMA --where idprograma=103 and vrsta='obavezan'@ --merge into predmet_student ps --using (select idpredmeta, count(*) n -- from da.ispit -- where ocena>5 and status='o' -- group by idpredmeta) as p --on ps.idpredmeta=p.idpredmeta --when matched then -- update set -- studenti=n --when not matched then -- insert -- values (idpredmeta, n)@ -- -- select * -- from predmet_student@ --2 --create table student_podaci ( -- indeks integer, -- broj_predmeta smallint, -- prosek float, -- datupisa date)@ --insert into student_podaci --select indeks, count(*), avg(ocena+0.0), null --from da.ispit --where ocena>5 and status='o' --and indeks not in (select indeks -- from da.dosije d join da.STUDENTSKISTATUS ss -- on d.idstatusa=ss.id -- where naziv='Diplomirao') --group by indeks --having avg(ocena+0.0)>8 --union --select d.indeks, 10, 10.00, null --from da.dosije d join da.STUDENTSKISTATUS ss -- on d.idstatusa=ss.id --where naziv='Diplomirao'@ --merge into student_podaci sp --using (select d.indeks, naziv status, datupisa, -- count(i.idpredmeta) brp, avg(ocena+0.0) prosek -- from da.dosije d join da.STUDENTSKISTATUS s -- on d.idstatusa=s.id -- left outer join da.ispit i on d.indeks=i.indeks -- and ocena>5 and status='o' -- group by d.indeks, naziv, datupisa) as p --on sp.indeks=p.indeks --when matched and p.status='Diplomirao' then -- update set -- sp.datupisa=p.datupisa --when matched and p.status='Budzet' then -- update set -- (sp.broj_predmeta, sp.prosek)=(p.brp, p.prosek) --when matched and lower(p.status) like '%ispis%' then -- delete --when not matched and lower(p.status) not like '%ispis%' then -- insert (indeks, broj_predmeta, prosek) -- values (p.indeks, p.brp, p.prosek) --else ignore@ -- drop table student_podaci@ --3 --create trigger brisanje_studenta -- before delete -- on da.dosije -- referencing old as stari -- for each row -- when(stari.idstatusa in (select id -- from da.STUDENTSKISTATUS -- where naziv='Diplomirao')) -- begin atomic -- signal sqlstate '75000' ('Student ciji je status Diplomirao ne moze biti obrisan.'); -- end@ -- -- -- unos studenta koji je diplomirao --insert into da.dosije (indeks, idprograma, ime, prezime, idstatusa, datupisa) --values (20200349, 103, 'Marko', 'Petrovic', -2, current date)@ --select * --from da.dosije --where indeks=20200349@ --pokusaj brisanja studenta koji je diplomirao --delete from da.dosije --where indeks=20200349@ --drop trigger brisanje_studenta@ --4 --create trigger promena_espb before update of espb on da.predmet --referencing old as staro new as novo --for each row --begin atomic -- set novo.espb= case -- when staro.espb > novo.espb then staro.espb-1 -- when staro.espb < novo.espb then staro.espb+1 -- else staro.espb -- end; --end@ --unos novog predmeta i azuriranje njegovih bodova --insert into da.predmet(id, oznaka, naziv, espb) -- values(1601, 'pred1', 'predmet 1', 4)@ -- --select * --from da.predmet --where id=1601@ --update da.predmet --set espb=25 --where id=1601@ --select * --from da.predmet --where id=1601@ --update da.predmet --set espb=1 --where id=1601@ --select * --from da.predmet --where id=1601@ --update da.predmet --set espb=10, oznaka='pr1' --where id=1601@ --select * --from da.predmet --where id=1601@ --drop trigger promena_espb@ --5 --drop table broj_predmeta@ --pravljenje tabele --create table broj_predmeta(broj smallint)@ --unos trenutnog broja redova u tabeli predmet --insert into broj_predmeta select count(*) from da.predmet@ --select * from broj_predmeta@ --create trigger novi_pred -- after insert -- on da.predmet -- for each row -- begin atomic -- update broj_predmeta -- set broj = broj + 1; -- end@ --create trigger brisanje_pred -- after delete -- on da.predmet -- for each row -- begin atomic -- update broj_predmeta -- set broj = broj - 1; -- end@ --insert into da.predmet (id, oznaka, naziv, espb) -- values(2002, 'predm13', 'predmet 13', 15)@ --select * --from broj_predmeta@ --delete from da.predmet --where id=2002@ --select * --from broj_predmeta@ --drop trigger brisanje_pred@ --drop trigger novi_pred@