Om fältet är din primära nyckel...
...då, som sagt på andra ställen i denna fråga, bör du inte byta ID. ID:n är redan unika och du varken behöver eller vill återanvända dem.
Nu, som sagt...
Annars...
Det är mycket möjligt att du har en annan fältet (det vill säga, såväl som PK) för någon applikationsdefinierad beställning. Så länge som denna ordning inte är inneboende i något annat fält (t.ex. om det är användardefinierat), så är det inget fel med detta.
Du kan återskapa tabellen med en (tillfällig) auto_increment
och ta sedan bort auto_increment
efteråt.
Jag skulle bli frestad att UPDATE
i stigande ordning och tillämpa en inkrementerande variabel.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Det verkar ganska slösaktigt att göra detta varje gång du tar bort objekt, men tyvärr med denna manuella beställningsmetod finns det inte så mycket du kan göra åt det om du vill behålla kolumnens integritet.
Du kan möjligen minska belastningen, så att efter att ha raderat posten med myOrderCol
lika med, säg, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Detta kommer att "shuffla" alla följande värden ned med ett.