自動インクリメント主キーの並べ替え: 内部ギャップの解決策
MySQL で自動インクリメント主キーを扱う場合、一般的に次のことが行われます。削除された行により、ID シーケンスにギャップが発生します。連続性を確保し、データの整合性を維持するには、主キーの順序を変更することが重要です。この記事では、この問題に対処するための包括的な解決策を提供します。
クエリで述べたように、行 15 ~ 18 が削除されており、ID 列にギャップが残っています。主キー値を再割り当てしてリセットするには、次の手順に従います。
SET @count = 0; UPDATE `users` SET `users`.`id` = @count:= @count + 1;
このクエリは、一時変数 @count を 0 に設定し、users テーブルの行ごとにそれを増分します。その後、id 列が新しい連続値で更新されます。
id 列が他のテーブルで外部キーとして使用されている場合は、外部キーの関係が ON UPDATE NO ACTION ではなく ON UPDATE CASCADE が有効になっていることを確認してください。これにより、他のテーブルの id 列への参照が自動的に更新されます。
自動インクリメント数をリセットするには、次のステートメントを実行します。
ALTER TABLE `users` AUTO_INCREMENT = 1;
これにより、自動インクリメントがリセットされます。ただし、MySQL の場合、値は最大 ID 値に 1 を加えた値にリセットされます。
これらの手順を実装することで、順序を変更できます。自動インクリメント主キーをリセットして、連続性を確保し、削除された行によって引き起こされるデータの不一致を排除します。
以上がMySQL で自動インクリメント主キーを並べ替えてリセットしてギャップを解消するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。