Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: auto_increment -- problem
Forum PHP.pl > Forum > Bazy danych > MySQL
cybergood
witam!
mam mały problem z mysql.opisze problem na przykładnie ,mysle ze bedzie to bardziej zrozumiałe.

w bazie danych mam utworzone jakies pola oraz pole id z parametrem auto_increment
no i jest cos takiego ze gdy do bazy wrzuce jakies dane id przyjmuje wartosc 1 ,gdy usune te dane mam pusta tabele ,ale gdy znowu chce cos wrzucic to nie liczy mi od 0 tylko dodaje kolejna liczbe czyli w tym wypadku 2.no iteraz pytanko.jak zrobic zeby dawało kolejna liczbe ,ale zaleznie od id (czyli gdy mam id np 10 a rekordów było 15 ,usunołem 5 to zeby nie dawało 16 tylko 11) questionmark.gif


pozdrawiam.
troche namotałem ale mysle ze szczaicie aarambo.gif
crash
Musisz zmienić wartość auto_increment ręcznie...
nospor
A jaki to ma związek z php? Przenoszę

http://forum.php.pl/index.php?showtopic=32...l=autoincrement
http://forum.php.pl/index.php?showtopic=30...l=autoincrement

i proszę zmienic temat na wlaściwszy
cybergood
dobra pomyliłem działy. sad.gif
sorry.
temat zmieniłem. mysle ze na lepszy a nie taki ogólny.

problem jeszcze nie rozwiązany bo nie mam czasu .jak bede chwile miał to jeszcze napisze


pozdrawiam
xbitdesigns
ALTER TABLE `tabela` TYPE = InnoDB (nie wiem czy TYPE jest potrzebne; nie chce mi sie sprawdzac, ogolnie pracuje teraz na innodb i to dziala wiec...)

Masz 2 rekordy. Wartosc auto-inc dla nast. rekordu wynosi 3. Kasujesz te rekordy, ale wartosc auto inc. caly czas wynosi 3. Dlatego przed dodaniem rekordu wykonaj zapytanie powyzej (defragmentacja). Wtedy nowy rekord bedzie mial id rowne 1, a nie 3.

Nie wiem czy dobze to opisalem, pozatym chcialem uslyszec wasze opinie na ten tamat. Jesli natomiast skasujemy jakis srodkowy rekord (sa jakies inne, wieksze od niego) id zostanie utracone. Wiec tu pojawia sie moj problem, bo o ile wiem nie istnieje jakas bezwzgledna numeracja rekordow... (chyba ze "LIMIT x,1", gdzie 'x' to numer bezwzgledny rekordu(oczywiscie trzeba by te rekordy jakos wczesniej ulozyc, np. wlasnie wedlug auto-indexu.). A wiec?
Adiasz
Nie rozumiem nigdy ludzi, ktorzy chca miec ladne kolejne liczby w polu, ktore automatycznie sie samo zwieksza, na 99% przypadkow pole takie nazywa sie id, czyli identyfikator rekordu i z jak to z samej nazwy wynika identyfikuje dany rekord czyniac go unikatowym - po to sa identyfikatory. I nie opwinny byc wazne ich wartosci jako jakas zmienna tylko wazne jest ze przez nie mozna sie odwolac do danego rekordu.
Moim zdaniem jezeli ktos opiera jakakolwiek logike na kolejnych polach typu samoinkrementujacego sie (tzn jezeli konkretne wartosci zapisane w tym polu sa dla niego wazne ) popelnia blad i powinien przeprojektowac aplikacje.
xbitdesigns
Juz ich nie potrzebuje tongue.gif
Moja aplikacja miala mechanizm poruszania sie po rekordach wg. wlasnie klucza id, dlatego jakiekolwiek braki powodowaly "dziury" w przegladaniu. Ale obszedlem to sposobem "LIMIT x,1" itd...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.