Pokud je pole vaším primárním klíčem...
...pak, jak je uvedeno jinde v této otázce, neměli byste měnit ID. ID jsou již jedinečná a nemusíte je ani nechcete znovu používat.
To znamená...
Jinak...
Je docela možné, že to máte jiné pole (tedy stejně jako PK) pro nějaké aplikačně definované řazení. Pokud toto řazení není vlastní nějakému jinému poli (např. pokud je definováno uživatelem), není na tom nic špatného.
Tabulku můžete znovu vytvořit pomocí (dočasného) auto_increment
a poté odstraňte auto_increment
poté.
Byl bych v pokušení UPDATE
ve vzestupném pořadí a použijte zvyšující se proměnnou.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Dělat to pokaždé se zdá docela zbytečné odstraníte položky, ale bohužel s tímto přístupem ručního řazení s tím nemůžete mnoho udělat, pokud chcete zachovat integritu sloupce.
Mohli byste případně snížit zatížení tak, že po smazání položky pomocí myOrderCol
rovná se, řekněme, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
To „zamíchá“ všechny následující hodnoty o jednu dolů.