warezxp
7.02.2010, 16:26:25
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
7.02.2010, 16:43:01
Można uzupełnić, ale po co?
darko
7.02.2010, 16:46:38
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
7.02.2010, 16:47:07
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
7.02.2010, 16:48:49
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
7.02.2010, 16:49:39
Ok, dzięki tak zrobię

Nie wpadłem na to by przesuwać następne IDeki zaraz po usuniętym
Dzięki
Kshyhoo
7.02.2010, 16:52:02
Możesz też po każdym usunięciu rekordu użyć:
Kod
ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;
The Night Shadow
7.02.2010, 16:59:32
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.