Ако полето е вашият първичен ключ...
...тогава, както е посочено другаде по този въпрос, не трябва да променяте идентификатори. Идентификаторите вече са уникални и нито трябва, нито искате да ги използвате повторно.
Това каза...
В противен случай...
Напълно възможно е да имате различен поле (тоест, както и PK) за някаква подредба, дефинирана от приложението. Докато това подреждане не е присъщо на някое друго поле (например, ако е дефинирано от потребителя), няма нищо лошо в това.
Можете да пресъздадете таблицата с помощта на (временен) auto_increment
поле и след това премахнете auto_increment
след това.
Бих се изкушил да UPDATE
във възходящ ред и приложете нарастваща променлива.
SET @i = 0;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
ORDER BY `myOrderCol` ASC;
Изглежда доста разточително да правите това всеки път изтривате елементи, но за съжаление с този подход за ръчно подреждане не можете да направите много по въпроса, ако искате да запазите целостта на колоната.
Възможно е да намалите натоварването, така че след изтриване на записа с myOrderCol
равно на, да речем, 5
:
SET @i = 5;
UPDATE `table`
SET `myOrderCol` = @i:[email protected]+1
WHERE `myOrderCol` > 5
ORDER BY `myOrderCol` ASC;
Това ще "размеси" всички следните стойности надолу с една.