Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Ponumerowanie rekordów w bazie liczbami
Matt23
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 19.01.2013

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


Witam zebranych,
chciałbym się dowiedzieć w jaki sposób zrobić update do bazy, aby zmienić ID wszystkim rekordom by owe ID było względem siebie rosnące.

Sprawa wygląda tak, że mam straszne luki w tym id i chciałbym je pozmieniać na rosnące liczby. Jakim poleceniem mogę to zrobić?

Aktualnie mam

ID TABELA
21 Andrzej
47 Grzegorz
67 Anna

Chciałbym to zmienić na

1 Andrzej
2 Grzegorz
3 Anna
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Kiedyś też chciałem łatać luki w identyfikatorach i robiłem to tak (przykład na przestarzałych funkcjach mysql_):
  1. $query = mysql_query('SELECT `id` FROM `tabela` ORDER BY `id` ASC');
  2. for ($id = 1; $row = mysql_fetch_assoc($query); $id++) {
  3. if ($id !== (int) $row['id']) {
  4. mysql_query('UPDATE `tabela` SET `id` = ' . (int) $i . ' WHERE `id` = ' . (int) $row['id']);
  5. }
  6. }


Dzięki ORDER BY `id` ASC nie zrobi się bałagan, bo nadpisujesz zawsze identyfikatory większe lub równe aktualnej zmiennej iteracyjnej.

Ale jak koledzy wyżej wspomnieli, łatanie dziur nie ma sensu (IMG:style_emoticons/default/smile.gif) Klucz podstawowy jest z definicji wartością bez żadnej wartości informacyjnej, a luki przynajmniej przypominają nam, że coś usuwaliśmy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 04:11