フィールドが主キーの場合...
...次に、この質問の他の場所で述べられているように、IDを変更するべきではありません。 IDはすでに一意であり、再利用する必要も、再利用する必要もありません。
さて、それは言った...
それ以外の場合...
異なるを持っている可能性は十分にあります 一部のアプリケーション定義の順序付けのフィールド(つまり、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;
これにより、次のすべての値が1つ「シャッフル」されます。