Gość
13.06.2014, 09:43:44
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
13.06.2014, 09:48:57
Podstawowe pytanie: PO CO? Bo znajac zycie znowu chcesz w zly sposob rozwiązac jakis problem
Gość
13.06.2014, 09:56:47
Czemu znowu? Jeszcze na mnie nie krzyczałes ...

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

Przesuwając ID nie kasujesz nieuzywanych rekordow
A czy przypadkiem nie ma w innych tabelach odwolan do tych rekordow?
Gość
13.06.2014, 10:12:28
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ć
Crozin
13.06.2014, 10:13:09
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).
nospor
13.06.2014, 10:13:36
Ja sie pytam, czy są jakies odwolania do rekordow, ktorych ID chcesz zmienic czyli do rekordow, ktore istnieją
Gość
13.06.2014, 10:15:51
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
nospor
13.06.2014, 10:17:49
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ść
13.06.2014, 10:23:55
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
nospor
13.06.2014, 10:27:11
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żą
Gość
13.06.2014, 10:29:33
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
13.06.2014, 10:32:11
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
13.06.2014, 10:36:47
@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.