Hvis feltet er din primære nøgle...
...så, som sagt andetsteds i dette spørgsmål, bør du ikke skifte ID. ID'erne er allerede unikke, og du hverken behøver eller ønsker at genbruge dem.
Nå, når det er sagt...
Ellers...
Det er meget muligt, at du har en anden felt (det vil sige såvel som PK) for nogle applikationsdefinerede bestilling. Så længe denne rækkefølge ikke er iboende i et andet felt (f.eks. hvis det er brugerdefineret), så er der ikke noget galt med dette.
Du kan genskabe tabellen ved hjælp af en (midlertidig) auto_increment
og fjern derefter auto_increment
bagefter.
Jeg ville blive fristet til at UPDATE
i stigende rækkefølge og anvende en stigende variabel.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Det virker ganske spild at gøre dette hver gang du sletter elementer, men med denne manuelle bestillingstilgang er der desværre ikke meget, du kan gøre ved det, hvis du vil bevare kolonnens integritet.
Du kan muligvis reducere belastningen, sådan at efter sletning af posten med myOrderCol
lig med f.eks. 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Dette vil "blande" alle følgende værdier ned med én.