ďťż

SQL - AutoIncrement

       

Podstrony


telcocafe

Czy pole auto_increment oprócz powiększania liczby w tym polu potrafi automatycznie posegregować te liczby po wywaleniu kilku rekordów?

Przykład:
AUTO_INCREMENT | INNE POLE
1 | test
2 | test2
3 | test3

Powiedzmy, że wywalamy drugi rekord. Czy "nowy" drugi, "stary" trzeci uzyska automatycznie liczbę "2"?



nie

auto_increment jest unikalny i powiedzmy ze jesli miles kiedys record o id = 2 i go usuniesz to juz nigdy nie zostanie stworzony rekord o id = 2 poprzez auto_increment

gorzej, że po usunięciu jakiegokolwiek rekordu kolejna wartość przyjmie wartość ostatnią - tzn ostatnią z możliwych ;) (np. jezeli pole to integer to pole z auto_inc przyjmie wartość 2147483647) :(

//sprostowanie: do postu poniżej
faktycznie tak się nie dzieje, chociaż wczoraj jak tak robiłem, tzn. zmieniałem liczbę lub usuwałem to ostatnia wartość się przypisywała nie wiem czemu)

EDIT:
Przypomniałem sobie co wczoraj zrobiłem :D Zamieniłem wartość 1 na -1 i cała baza się posypała :D

Sorki za wprowadzenie w błąd :(
Użytkownik -=PcSA=- edytował ten post 30 maj 2005, 19:31



gorzej, że po usunięciu jakiegokolwiek rekordu kolejna wartość przyjmie wartość ostatnią - tzn ostatnią z możliwych ;) (np. jezeli pole to integer to pole z auto_inc przyjmie wartość 2147483647) :(

Chyba w dziale programowanie był poruszony ten temat. Dałem też tam mój prosty prymitywny sposób na ominięcie tego(nie koniecznie zawsze skuteczny)

zaletą auto_increment jest właśnie to że nie zmienia wartości :P

Jeśli będą dziury w polu AutoIncrement, np.
1
2
4
8
9
10
to jaką wartość otrzyma następne pole?

Jest taki problem. Każda kategoria, grupa, art, plik itd... mają swoje ID. Jeśli usunie się np. grupę, a następnie pozmniejsza pola ID w następnych polach, lista zawartości nie wyświetli się we właściwych grupach (chyba, że podczas usuwania zostaną wniesione poprawki w innych tabelach, ale to nie ma sensu).
Czy AutoIncrement wykorzysta brakujące liczby (np. 3, 5 z przykładu wyżej)? To by było wtedy dobre rozwiązanie.

edytowane
Jednak auto_increment wstawia wartość: 0. Wykonanie COUNT też nie będzie dobre. Co w takim razie radzicie?
Użytkownik Ferrari edytował ten post 03 czerwiec 2005, 22:58
Radzę nie zmieniać pola ID. Samemu tworzysz sobie problemy.
Jak usuwasz jakaś grupę, to po kiego grzyba zmieniasz ID innych grup? Narobisz sobie tylko kłopotu. Co z tego, że w numerach ID będzie dziura? Niech sobie będzie, przecież nikomu to nie przeszkadza. Zmieniając ID tylko komplikujesz sprawę i na dobre Ci to nie wyjdzie.
Widziałeś w jakimś serwisie, że się tak robi? Chyba tylko Ty wpadłeś na taki pomysł.


{...}to jaką wartość otrzyma następne pole?
11 (jeśli nie zmieniałeś ręcznie auto increment i nie było rekordów o większym ID)

nazwy grup mówisz hm.. zapewne są one unikatowe tak ? to po co dodatkowe id numeryczne ;)

ps był podany kod ostatnio na forum, który przeciwdziałał dziurą autouzupełniania :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.