Als het veld uw primaire sleutel is...
...dan, zoals elders bij deze vraag vermeld, moet u geen ID's wijzigen. De ID's zijn al uniek en u hoeft ze niet opnieuw te gebruiken.
Dat gezegd hebbende...
Anders...
Het is heel goed mogelijk dat je een andere . hebt veld (dat wil zeggen, evenals de PK) voor een door een toepassing gedefinieerde volgorde. Zolang deze volgorde niet inherent is aan een ander veld (bijvoorbeeld als het door de gebruiker is gedefinieerd), is hier niets mis mee.
Je zou de tabel opnieuw kunnen maken met een (tijdelijke) auto_increment
veld en verwijder vervolgens de auto_increment
daarna.
Ik zou in de verleiding komen om UPDATE
in oplopende volgorde en pas een oplopende variabele toe.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Het lijkt nogal verspillend om dit elke keer te doen u verwijdert items, maar helaas kunt u met deze handmatige bestelaanpak niet veel doen als u de integriteit van de kolom wilt behouden.
U kunt eventueel de belasting verminderen, zodat na het verwijderen van de invoer met myOrderCol
gelijk aan, zeg, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Dit zal alle volgende waarden met één "schudden".