Jeśli pole jest Twoim kluczem podstawowym...
...wtedy, jak wspomniano w innym miejscu na to pytanie, nie powinieneś zmieniać identyfikatorów. Identyfikatory są już unikalne i nie musisz ani nie chcesz ich ponownie używać.
To powiedziawszy...
W przeciwnym razie...
Całkiem możliwe, że masz inny pole (to znaczy, a także PK) dla niektórych porządków zdefiniowanych przez aplikację. Dopóki ta kolejność nie jest związana z jakimś innym polem (np. jeśli jest zdefiniowana przez użytkownika), nie ma w tym nic złego.
Możesz odtworzyć tabelę za pomocą (tymczasowego) auto_increment
pole, a następnie usuń auto_increment
potem.
Kusi mnie UPDATE
w kolejności rosnącej i zastosuj zmienną inkrementacyjną.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Robienie tego za każdym razem wydaje się dość marnotrawstwem usuwasz elementy, ale niestety przy takim podejściu do ręcznego zamawiania niewiele możesz z tym zrobić, jeśli chcesz zachować integralność kolumny.
Możesz ewentualnie zmniejszyć obciążenie, tak że po usunięciu wpisu za pomocą myOrderCol
równe, powiedzmy, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Spowoduje to „przetasowanie” wszystkich poniższych wartości o jeden.