Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Auto increment u polju ID

[es] :: MySQL :: Auto increment u polju ID

[ Pregleda: 2689 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 139
*.PPPoE-901.sa.bih.net.ba.



+7 Profil

icon Auto increment u polju ID10.09.2006. u 15:31 - pre 213 meseci
Imam u tabeli unijeto 100 redova i polje "id" koje je kljuc i auto icrement. I pokazuje mi, normalno brojeve redom od 1 do 100. Medjutim, kada isbrisem npr. red 56. mozel nekako da se indexiranje "osvjezi", da mi pokazuje 1 do 99 (posto sam izbrisao jedan red)???? Ili naprimjer, ja ubacim novi red 101, i izbrisem ga, i ponovo ubacim novi red, id pokazuje mi 102? Moze li se ovo nekako fixirat?
AleXandar
 
Odgovor na temu

misk0
.: Lugano :. _.: CH :.

SuperModerator
Član broj: 634
Poruke: 2824
*.adsl.ticino.com.

ICQ: 46802502


+49 Profil

icon Re: Auto increment u polju ID10.09.2006. u 22:31 - pre 213 meseci
Ne, auto_increment uvijek dodaje sledeci broj u nizu, ne gleda da li ima praznina izmedju. To rijesavas programski u aplikaciji, obicno sortiras i onda dodas rucno promjenjivu u neki dataset koji ce biti 'neki redni broj'. Ili da pravis svoju funkciju koja ce raditi 'pazljiviji insert' tj pogledati prvo ima li rupa pa onda eventualno te rupe popunjavati sa odgovarajucim IDom. Mogucnost je jos i da po brisanju jednog (56og sloga) shiftujes sve ostale za -1 mjesto - dobro ce raditi sa 100 slogova - sa 100.000 JAKO loshe - izbjegavati.
Ako nesto vezes za taj ID - ne smijes ga mjenjati, odoshe ti veze niz rijeku :)

:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
 
Odgovor na temu

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 139
*.PPPoE-3455.sa.bih.net.ba.



+7 Profil

icon Re: Auto increment u polju ID10.09.2006. u 23:13 - pre 213 meseci
Da ne smijem mjenjat ako nesto vezem za taj ID, stvar je u tome sto nista ne vezem. To shiftovanje za -1 mjesto mi odgovara, moze li se to nekako direktno uraditi preko SQL-a ili moram pisat funkciju za to? I kako mogu nastimati sljedeci auto index?
AleXandar
 
Odgovor na temu

misk0
.: Lugano :. _.: CH :.

SuperModerator
Član broj: 634
Poruke: 2824
*.adsl.ticino.com.

ICQ: 46802502


+49 Profil

icon Re: Auto increment u polju ID11.09.2006. u 08:25 - pre 213 meseci
mozda ovako :
Code:

UPDATE tvoja_tabela SET id = id - 1 WHERE ID > 56 



:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
 
Odgovor na temu

Schmidt
RHCE

Član broj: 80784
Poruke: 647
*.poen.net.



+10 Profil

icon Re: Auto increment u polju ID15.09.2006. u 08:17 - pre 213 meseci
Ostavi auto icrement na miru da radi svoj posao :)
Dodaj josh jedno polje, npr. redni_broj

Prilikom inserta uradi "INSERT INTO _tabela_ (col1,col2,redni_broj) VALUES(col1_vrijednost,col2_vrijednost,count(*)+1);"

Nisam testirao da li radi, mislim da mozhe tako. Ako ne mozhe onda neshto otprilike ovako:
u php-u npr.: select count(*) from _table_ pa onda dodijlish vrijednost nekoj varijabli...
poslije toga uradish insert, i u polje sa rednim brojem dodash vrijednost count(*).

Mislim da je to brzhe nego da ispitujesh ima li rupa i shiftujesh slogove itd.

Ostaje ti josh da prilikom brisanja slogova napishesh neku funkciju koja bi ispitivala koji se slog brishe. Ako se brishe s kraja ne dirash redni broj, ako se bishe negdje iz sredine onda pomjeri/shiftuj sve redne brojeve koji su poslije dotichnog sloga.

P.S. Izgleda da ne mozhe bez shiftovanja kako god okrenesh :) Mada i dalje ne kontam zashto bi to radio, ali tvoja odluka :) Zamisli samo operacije koje bi baza morala uraditi u sluchaju da je to velika tabela sa preko par miliona redova...

[Ovu poruku je menjao Schmidt dana 15.09.2006. u 14:09 GMT+1]
 
Odgovor na temu

[es] :: MySQL :: Auto increment u polju ID

[ Pregleda: 2689 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.