[ mysqlNuts @ 28.12.2005. 07:41 ] @
Imam u tabeli ID autoincrement a posto mi je ona vazna za izracunavanje nekih drugih vrednosti potrebno mi da nemam "rupa" u tom rastucem redosledu. Desilo mi se da sam imao pogresan unos. Kada sam obrisao slogove i ponovo upisao (ispravno) preskocio mi je ID vrednosti koje je imao pri upisu ona prva dva.
Jel mogu da vratim autoincrement za dva mesta unazad tako da mi svaki sledeci unos ide u kontinuitetu?
[ Gojko Vujovic @ 28.12.2005. 09:19 ] @
http://www.elitesecurity.org/tema/75260
[ broker @ 28.12.2005. 09:29 ] @
Ne radi se to tako. ako korsitis autoinkrement onda nemj dalje da sepetljas. Ako ti treba to "slaganje" id-ova onda nemoj da korsitis autoincrement nego upisuj vrednost ID-a svojom funkcijom, prilikom upisa sloga.
[ Gojko Vujovic @ 28.12.2005. 09:34 ] @
I to je tačno, mada treba obezbediti neki locking kako se u slučaju istovremenog pristupa ne bi došlo do neželjenog preplitanja.
[ jablan @ 28.12.2005. 09:41 ] @
Meni se čini da se dobrom arhitekturom aplikacije izbegava svaka potreba za sekvencijalnim poljem u tabeli.
[ broker @ 28.12.2005. 09:47 ] @
To je najbolje. Ako aplikacija zahteva da ID-ovi budu sekvencijalni, onda nesto nije dobro osmisljeno.
[ mysqlNuts @ 28.12.2005. 10:38 ] @
Hvala na odgovorima, a da je to lose resenje znam, ali sam aplikaciju nasledio od bivseg kolege tako da "sta je tu je".
[ dragancesu @ 29.12.2005. 07:38 ] @
Svi smo se slozili da je to tvoje resenje problematicno, a ako bas mora probaj preko pomocne tabele.

Ako je tvoja struktura table (id, polje1, polje2, polje3 ) kreiras tabela2 sa tom strukturom (naravno polje id je auto incement) pa uradis

insert into tabela2 (polje1, polje2, polje3 )
select polje1, polje2, polje3 form tabela
order by id;

i posle tabelu tabela2 preimenujes u tabela, ili vec nesto drugo.