Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] luki w ID
Forum PHP.pl > Forum > PHP
eska97
Witam. Przechodząc od razu do pytania:
Załóżmy że mamy taką tabelę:



(Oczywiście ID jest AUTO_INCREMENT)

Rekordy 3,6,8 zostały usunięte.

i chodzi mi o to, że gdy chcę dodać kolejny rekord żeby zawsze najpierw sprawdzało czy nie ma tych luk. Jeżeli taką lukę znajdzie to wrzucił tam nowy rekord.
kartin
Masz jakąś szczególną potrzebę zachowania ciągłości ID? Zasadniczo takich rzeczy się nie robi, ale jeśli bardzo chcesz to możesz w wyzwalaczu BEFORE INSERT wyszukiwać pierwszy wolny ID i ustawiać go dla nowego wiersza.
Skie
Dla nowych danych powinieneś ZAWSZE korzystać z nowego ID. Jeżeli stare dane po skasowaniu stworzyły gdzieś w systemie jakąś niespójność, to tworzenie nowych danych na to miejsce może doprowadzić do poważnych konsekwencji z utrzymaniem systemu. Oprócz hipotetycznych dziur w samym systemie, taki zabieg może wprowadzić w błąd użytkowników systemu.
eska97
właśnie bardzo ważne jest to, aby utrzymać ciągłość, ale chyba po prostu zamiast usuwania wartości, ustawiać będę pole, które w przykładzie nazwałem nazwa na -1, bo i tak to jest wartość liczbowa dodatnia. i będę wyszukiwać zamiast luk wartości "-1"
Pyton_000
A w czym CI przeszkadza luka ?
eska97
określa to do kogo należy kanał na serwerze TS3. smile.gif
zabieram się do pisania z wartością -1
viking
Czyli załóżmy kanał 20 należał do Jasia Kowalskiego, kasujesz go, i teraz wypełniasz ponownie że kanał 20 należy do Gosi Janiemogę. Nie widzisz problemu?
Puszy
Zamiast używać ID utwórz nową kolumnę i tam przetrzymuj wartości 1-20. Jeżeli się nie mylę to możesz utworzyć nową tablicę zrobić mapowanie i wtedy przypisze się defaultowo najniższa wartość, ale mogę bredzić.
eska97
Cytat(viking @ 23.07.2015, 14:07:48 ) *
Czyli załóżmy kanał 20 należał do Jasia Kowalskiego, kasujesz go, i teraz wypełniasz ponownie że kanał 20 należy do Gosi Janiemogę. Nie widzisz problemu?


po prostu miałem inny konspekt pisząc na początku.

proszę o zamknięcie, bo powstaje niepotrzebny spam.
MESSIAH :)
Dobrym sposobem jest rozwiazac problem tak jak tablice rejestracyjne. Stworz wlasny taki system gdzie np: na podstawie miejsca zamieszkania kazdy uzytkownik bedzie mial wlasna rejestracje tak jak samochody. Po usunieciu konta numer rejestracyjny bedzie w buforze na ok 14 dni po tym czasie numer wroci ponownie do puli.
viking
Id jest wlaśnie taką rejestracją.
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.