-- naredimo glavo in telo računa drop table if exists RacGlava; create table RacGlava (stRac int auto_increment primary key, skZnesek float, Cas datetime default now()); -- vnesemo dve glavi računa s številkama račumov 1 in 2 insert into RacGlava(stRac) values(1); insert into RacGlava(stRac) values(2); select * from RacGlava; drop table if exists RacTelo; create table RacTelo (id int auto_increment primary key,SifraArtikla varchar(20),kol float default 1,cena float,StRac int, foreign key (StRac) references RacGlava(stRac)); -- povežemo telo in glavo preko tujega ključa select * from RacTelo; -- naredimo dva bazna prožilca za insert in update v telesu računa drop trigger if exists PostRac; delimiter // -- MariaDB ne zna after insert or update, zato je vsako posebaj create trigger PostRac after insert on RacTelo for each row begin update RacGlava set skZnesek=( select sum(new.kol*new.cena) from RacTelo where RacGlava.stRac=new.StRac) where stRac=new.StRac; -- ne smemo pozabiti where pogoja, da ne popravi vseh vnešenih računov end // delimiter ; drop trigger if exists PostRacUpd; delimiter // create trigger PostRacUpd after update on RacTelo for each row begin update RacGlava set skZnesek=( select sum(new.kol*new.cena) from RacTelo where RacGlava.stRac=new.StRac) where stRac=new.StRac; end // delimiter ; SET SQL_SAFE_UPDATES=0; -- če nas moti da vsakič zahteva where del stavka - je pa to lahko nevarno, da ne uničimo cele tabele -- vnesemo še nekaj na računa in preverimo, če se je skupni znesek avtomatsko izračunal insert into RacTelo (StRac, SifraArtikla,kol,cena) values (1,"cokolada",8,4.6); insert into RacTelo (StRac, SifraArtikla,kol,cena) values (1,"med",1.2,8.2); insert into RacTelo (StRac, SifraArtikla,kol,cena) values (2,"salama",0.75,12.99); select * from RacTelo; select * from RacGlava;