Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] Auto_increment i wielkie ID
My4tic
post 16.08.2006, 14:01:33
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

Ostrzeżenie: (0%)
-----


Witam,

Mam następujący problem. W bazie danych mam pole ID z funkcją auto_increment. Powiedzmy, ze w bazie jest 100 rekordów. Kasujemy rekord numer 1.

Chcialbym aby w takim przypadku wszystkie rekordy od id = 2 do konca tebaeli przesunęły sie o ID-1, a przy kolejnym INSERT'cie, dodawane pole miało ID = 100 a nie 101.

Jak sobie z tym poradzic?

Pzdr


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
dr_bonzo
post 16.08.2006, 14:08:08
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Nie!
Tego sie nie robi.


A jak juz musisz, to po usunieciu:

  1. UPDATE tabela SET id = id - 1 WHERE id > $Id

lub triggerem w podobny sposob


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
My4tic
post 16.08.2006, 15:16:50
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 16.08.2006, 13:08 ) *
Nie!
Tego sie nie robi.


A mozesz cos wiecej powiedziec? Dlaczego nie?

Cytat(dr_bonzo @ 16.08.2006, 13:08 ) *
A jak juz musisz, to po usunieciu:
  1. UPDATE tabela SET id = id - 1 WHERE id > $Id


Ok, ale auto_increment dalej przypisze kolejnemu wprowadzanemu rekordowi ID = 101 a nie 100.

Właściwie nie jest to w moim przypadku konieczne tylko wydawało mi sie, ze lepiej zrobić cos takiego gdyz mam ID rekordów idące w milionach z czego jakies 98% już nie istnieje :-) Myślałem ze dobrze byloby użyć tych 'pustych' numerów ID niż dodawać nowe...


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
orson
post 16.08.2006, 20:58:44
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam

jak masz tyle id zmień je z liczb na znaki losowe ... guid lub md5/sha1 z time+rand z tego i nie przejmuj się dziurami w kolejnych numerach ... jak stringi są za długie użyj crc32 (albo z tego "losowego" winksmiley.jpg albo z time+rand) - ale tu musisz sprawdzać czy się nie powtarza ...

przestawianie auto_increment nie jest dobrym pomysłem - nie ma kontroli nad tym który proces pierwszy odczyta nowe wartości - może dojść do kolizii ... no i jak widzę chcesz to robić dla dużej częśći tych rekordów - może się posypać ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
My4tic
post 16.08.2006, 22:00:50
Post #5





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

Ostrzeżenie: (0%)
-----


Ok, dzięki za informacje. Wydaje mi się, że jednak nie ma sie co z tym bawić. Jeśli chodzi o rozwiązanie z losowymi stringami (swoją drogą musze zapytać dziewczyne jak losuje stringi tongue.gif ) to jest to też dość ryzykowne. Szczegolnie przy duzej ilości rekordów. Przy algorytmach haszujących zawsze jest prawdopodobieństwo, że dwa różne stringi będą miały taki sam hasz. Zostawie to auto_increment, w końcu milion to dla komputera nie jest coś wielkiego :-)

Pozdrawiam


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
orson
post 17.08.2006, 06:44:49
Post #6





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam

Cytat(My4tic @ 16.08.2006, 23:00 ) *
Przy algorytmach haszujących zawsze jest prawdopodobieństwo, że dwa różne stringi będą miały taki sam hasz.

przy sha1 to jeszcze nie słyszałem o kolizii haszy ...
ale int + auto_increment wystarczy w zupełności ...

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
icetab
post 28.03.2008, 16:13:10
Post #7





Grupa: Zarejestrowani
Postów: 226
Pomógł: 3
Dołączył: 3.04.2007

Ostrzeżenie: (50%)
XXX--


a pytanie do was chlopaki zamiast licz w auto_increment jak zrobic powiedzmy
  1. <?php
  2. substr( md5(uniqid (rand())), 0, 5 );
  3. ?>
ze bedzie np nie los.php?id=12 tylko los.php?id=71pz5 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:00