Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] organizacja auto_increment
Forum PHP.pl > Forum > Przedszkole
Gość
WIem, że pole auto_increment powinno byc stałe i niezmienialne.
Ale ma pytanie czy jezeli ma tabele z AI i dane 1, 2, 3, 5, 9... moge jakims prostym zapytaniem przesortowac na 1,2,3,4,5 z zachowaniem kolejności czyli 5=4 i 9=5 ?
nospor
Podstawowe pytanie: PO CO? Bo znajac zycie znowu chcesz w zly sposob rozwiązac jakis problem
Gość
Czemu znowu? Jeszcze na mnie nie krzyczałes ... smile.gif

Po co?
Musze przerobic stara tabele na nowy system i przy okazji wywalic nieuzywane rekordy, po prostu.
nospor
Piszac "Ty" mialem na mysli ogólnie początkujących userow smile.gif

Przesuwając ID nie kasujesz nieuzywanych rekordow smile.gif
A czy przypadkiem nie ma w innych tabelach odwolan do tych rekordow?
Gość
Tabela zawierała rekordy z produktami i miała pole "jest", wszystkie te rekordy z "jest" = 0 zostały skasowane, nie ma do nich żadnych odwołań tylko zostały dziury w tabeli, które potrzebuje wyrzucić smile.gif
Crozin
Kolumny typu "id auto_increment" powinieneś traktować stricte jako wew. element struktury bazy danych/aplikacji - ich wartości są na prawdę bez najmniejszego znaczenia, a mieszanie z ich wartościami, choć jak najbardziej możliwe absolutnie niczego nie daje, a jest potencjalnym miejscem dla wystąpienia dziesiątek problemów.

EDIT: 1. Usuwanie takich danych z reguły jest słabym pomysłem - oznaczanie jakiejś flagi "usunięto" to dużo lepsze rozwiązanie; 2. Na 99,9% nie potrzebujesz usunąć tych dziur tylko chcesz to zrobić z "błędnego poczucia estetyki" (to tak odnośnie tych początkujących o których wspomniał @nospor). wink.gif
nospor
Ja sie pytam, czy są jakies odwolania do rekordow, ktorych ID chcesz zmienic czyli do rekordow, ktore istnieją smile.gif
Gość
Nie jestem aż takim początkującym, żeby wiedzieć, że zmiana id może popsuć relacje.
To był naprawde stary skrypt i wszystko było w jednej tabeli, tak więc nic się nie popsuje, pytałem tylko o info jak to zrobic smile.gif
nospor
Sluchaj, nie wiem jakim jestes poczatkujacym.... Chcialem cie ustrzec przed ewentualnym problemem, to chyba nie przestepstwo z mojej strony?

Skopiuj rekordy do nowej tabeli - INSERT INTO....SELECT i po sprawie. Bedziesz mial na nowo numerowane.
Gość
Ok, bez spiny, rozumiałem zagrożenie ale po prostu dostałem polecenie żeby to zrobić "z góry"
Przykład z pierwszego postu był prosty, w praktyce są to rekordy liczone w sześciu cyfrach i niektórych i tak już nie było, a nowy system ma być "ładny i przejrzysty".
Jeżeli nie ma nic innego niż SELECT / INSERT to ok, dzięki za info i pozdrawiam smile.gif
nospor
Cytat
a nowy system ma być "ładny i przejrzysty".
Czyli to co pisał Crozin - estetyka. W normalnym systemie "wyglad" ID nie ma znaczenia. No ale z rozkazami z "gory" sie nie dyskutuje i zaciska zeby i robi co każą smile.gif
Gość
Dokładnie, nie zauważyłem edycji.
Ma to wyglądac domena.pl/product/1/ zamiast domena.pl/product/123412414

Czyli dokładnie - "siła wyższa"
nospor
No i w takim wypadku ma to jakiś sens. Gdy system rusza od nowa, dziwnie by wyglądały linki z milionem zamiast z jedynką

INSERT INTO... SELECT jest szybkim rozwiązaniem.
Sedziwoj
@nospor podziwiam, tyle lat i ciągle masz siłę tłumaczyć że dziury w numeracji id są bez znaczenia.

Co do sprawy, to chcesz zrobić coś w stylu, że sporo osób umarło, więc są dziury w numeracji PESEL, weźmy pozmieniajmy te numery aby ładniej to wyglądało.
1) id jest identyfikatorem, jak Twoje imię i nazwisko, nikt tego nie zmienia bo jest brzydkie (dobra wiem, są wyjątki)
2) sama zmiana pociąga za sobą wielkie ryzyko doprowadzenia do niespójności danych, gdzie nie ma praktycznie zysku, więc zysk/ryzyko jest dość kiepskie w tym przypadku (refactoring też ma ryzyko, ale zyski ma spore)
3) porządki są w tym jakie dane są przechowywane i w jakiej formie, a nie rzucanie się na biedne id

*zakładam ze to jest id, bo bardzo rzadko stosuje się automatyczną inkrementację gdzieś indziej.
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.