-- 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;