Autor Zpráva
SteveO
Profil *
Zdravím, potřeboval bych naléhavě poradit.
V DB je cca 50 tisíc řádků s IDčky ve sloupci id. Tato ID byla doplněna pomocí A_I.
V průběhu plnění databáze se samozřejmě některé řádky smazaly a ID tak nyní nejdou přesně popořadě.
A dotaz zní, jak přepočítat sloupec s IDčky tak, aby šly od 1 do konce, tedy do těch cca 50 000?
Zkusil jsem to následujícím skriptem (udělal jsem kopii sloupce - sloupec id2 tedy obsahuje stejné hodnoty jako sloupec id), ale těch dotazů na databázi je v cyklu prostě moc a server vyhodí chybu 500.
Zkoušel jsem to i po částech přes LIMIT na 2000, ale nepomohlo to.

$i=0;
$sql=mysql_query("SELECT id2 FROM tabulka ORDER BY id2 LIMIT 0, 2000");
while($data=mysql_fetch_array($sql)) {
$i++;
$sql2=mysql_query("UPDATE tabulka SET id=".$i." WHERE id2=".$data["id2"]);
}

Díky všem za rady.
Taps
Profil
SteveO:
Některé časteji řešené dotazy pro MySQL - FAQ » Recyklování primárních klíčů smazaných záznamů
Alphard
Profil
Jestli na takové nerozumnosti trváte, ve FAQ je kód, který to udělá.
Sir Tom
Profil
SteveO:
Také zdravím, na změnu IDček se vykašli. Nemůžeš měnit identifikační položku k řádku.
candiess
Profil
Sir Tom:
ne že nemuže, ale neměl by to dělat, zvášt pokud používá relace
whoami
Profil
candiess:
ON UPDATE CASCADE

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: