[ cesare @ 24.01.2011. 12:55 ] @
Pozdrav svima !!!

Da li je moguće koristeći komande INSERT ili UPDATE kao vrednost nekog polja tabele ubaciti vrednost neke agregatne funkcije, npr. COUNT(). Ovo mi je potrebno da bih prilikom upisa zapisa u tabelu računa generisao broj računa kao brojračuna/godinaračuna. Pošto podatke iz ove baze ažurira program rađen u VCNET-u, ideja je da se sa jednim INSERT odradi sve npr. INSERT INTO tblracuni (brojracuna) VALUES (COUNT(brojracuna) + 1 + tekucagodina). Ako ovakva varijanta nije moguća, postoji li neko alternativno rešenje, ali da sve bude u jednom upitu ?

Unapred hvala !!!
[ mret @ 24.01.2011. 13:21 ] @
Ovako tesko da moze da se uradi. Postoje dve kombinacije
1. INSERT + UPDATE
2. INSERT + TRIGGER


------------
CREATE TABLE `testiraj` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`dat` DATETIME NOT NULL,
`genbroj` VARCHAR(45),
PRIMARY KEY (`id`)
)
ENGINE = InnoDB;


1. varijanta.
insert into testiraj(dat) values(now());
set @id=last_insert_id();
update testiraj set genbroj=concat(@id,'/',year(dat)) where id=@id;

2. varijanta
insert into testiraj(dat) values(now());

... i onda trigger uradi svoje
drop tigger a_testi;
CREATE TRIGGER `a_testi` before INSERT
ON testiraj FOR EACH ROW
BEGIN
set new.genbroj=concat((select count(*)+1 from testiraj),'/',year(new.dat));
END;


sada vidi kako ti je lakse.....