Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Auto korekta numerów ID w tabeli, jak ?
Forum PHP.pl > Forum > Przedszkole
warezxp
Witam !

Otóż natknąłem się na mały problem, jak mam bazę MySQL a w niej tabele z rekordami z której po usunięciu powiedzmy rekordu o numerze "4" zostaje pustka jest tak ...1.2.3.5.6... i mimo auto-numerowania pustka ta nie jest wypełniana następnymi rekordami. Jak można temu zaradzić ?


Z góry dziękuję za pomoc.
Kshyhoo
Można uzupełnić, ale po co?
darko
Nie ma sensu zachowywać ciągłości idków w bazie, jednak jednym z rozwiązań mógłby być odpowiedni trigger ustawiony na operację delete w bazie, który przenumerowałby idki. Tylko tu należy zwrócić uwagę na tabele powiązane danym kluczem obcym i raczej w przypadku rozbudowanych relacji nie będzie proste napisanie stosownego triggera, a i pewnie trzeba byłoby użyć tabel tymczasowych.
warezxp
Gdyż te wszystkie rekordy są pytaniami, gdy jej wywołuje ID jest numerem pytania i nie estetycznie wygląda pytanie nr: 3 a po nim nr:5.
darko
To pobierz tylko ilość wszystkich rekordów i (wszystkie IDKI?) i ustal pozycję bieżącego ID w danej puli, następnie wyświetl jedynie pozycję IDKA w zbiorze.
warezxp
Ok, dzięki tak zrobię smile.gif Nie wpadłem na to by przesuwać następne IDeki zaraz po usuniętym biggrin.gif

Dzięki
Kshyhoo
Możesz też po każdym usunięciu rekordu użyć:
Kod
ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;
The Night Shadow
Robisz tak. ID z autonumerownaiem przyspiesza wyuszukiwanie danych w danej tabeli więc tego sie nie pozbywaj. Stwórz kolejną kolumne np. o nazwie NUMER.

1. Dodawanie rekordu
Pobierz MAX(numer) z tabeli z pytaniami dla danej póli. Podczas dodawania nowego rekordu ustal numer jako +1 względem pobranej wartości.
2. Usuwanie rekordu
Po usunięciu pobierz rekordy z danej puli sortując je według numeru rosnąco i kolejno aktualizuj podając kolejne numer.

Dodatkowo można stworzyć dwie funkcje jedną dla przesunęcia pytania w góre, drugą dla przesunięica pytania w dół.
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.