Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.818 pregleda

Najnovija ↓

Auto increment u polju ID 10.09.2006. u 16:31 · pre 245 meseci #1
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?
Potpis
AleXandar
Re: Auto increment u polju ID 10.09.2006. u 23:31 · pre 245 meseci #2
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 :)
Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Auto increment u polju ID 11.09.2006. u 00:13 · pre 245 meseci #3
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?
Potpis
AleXandar
Re: Auto increment u polju ID 11.09.2006. u 09:25 · pre 245 meseci #4
mozda ovako :
Code:

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


Potpis
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
Re: Auto increment u polju ID 15.09.2006. u 09:17 · pre 245 meseci
izmenjeno 1 put, poslednji put Schmidt 15.09.2006. u 14:09
  1. Schmidt15.09.2006. u 14:09zapis iz teksta poruke
#5
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...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme