[ MarkoBalkan @ 09.10.2009. 18:21 ] @
ako nekome treba kreiramo prvu tablicu Proizvod Code: CREATE TABLE `proizvod` ( `ID` int(11) DEFAULT NULL, `Proizvod` varchar(40) DEFAULT NULL, `Opis` varchar(100) DEFAULT NULL, `Cijena` double(20,2) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Code: CREATE TABLE `racun` ( `ID` int(11) DEFAULT NULL, `ID_Proizvod` int(11) DEFAULT NULL, `Kolicina` double(30,5) DEFAULT NULL, `Ukupno` double(30,5) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Code: CREATE TABLE `po_racunu` ( `ID` int(11) DEFAULT NULL, `Ukupno` double(20,5) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Code: DELIMITER $$ DROP TRIGGER /*!50032 IF EXISTS */ `marko`.`racun-ukupno`$$ CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER `racun-ukupno` BEFORE INSERT ON `racun` FOR EACH ROW BEGIN set New.Ukupno=new.kolicina*(select cijena from proizvod where proizvod.ID=NEW.ID_Proizvod); END; $$ DELIMITER ; Code: DELIMITER $$ DROP TRIGGER /*!50032 IF EXISTS */ `marko`.`po-racunu`$$ CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER `po-racunu` AFTER INSERT ON `racun` FOR EACH ROW BEGIN declare i int; select count(*) into i from racun where racun.ID=NEW.ID; if (i=1) then insert into po_racunu(ID,Ukupno) values(NEW.ID,0); update po_racunu set Ukupno=Ukupno+new.Ukupno where ID=NEW.ID; else update po_racunu set Ukupno=Ukupno+new.Ukupno where ID=NEW.ID; end if; END; $$ DELIMITER ; tablica proizvod sadrži podatke o proizvodima. tablica racun, podatke o racunima s time da se ukupno popunjava na prvi triger (racun ukupno). a tablica po racunu popunjava se na drugi triger(po-racunu) - ukupna cifra po racunu. ovo je samo mali primjer. mislim da je prvi triger jasan. objašnjenje drugog. kad kreiramo račun i za neki unosimo proizvode prvo sa count provjerimo dali postoji racun. ako unosimo tek prvi proizvod za neki račun, select će vratiti 1. nakon toga insertira taj ID i 0 za ukupno tako da može zbrajati kasnije, da umjesto 0 piše null ništa s ene bi dogodilo. i nakon toga vršimo updat eukupno. nakon drugog unosa proizvoda za isti račun, count vraća 2 i samo će update-ti Ukupno. nadam sam da sam pomogao. u tablicu račun se upisuje sve osim Ukupno. a po računu se upisuje i ažurira automatski. |