【SQL】
レコード残したままオートインクリメントの主キーを採番し直す

投稿日:2019/04/04

どういう状況?

●プライマリーキーにしているアトリビュートではオートインクリメントで連番に設定している.
●ある日レコードを削除したため連番に穴ができてしまった.
●レコードを残したまま連番を採番したい!!

※念の為エクスポートしてバックアップ取っていてください.

手順

①主キー・オートインクリメント解除 

主キーの解除
ALTER TABLE `table_name` DROP PRIMARY KEY;
オートインクリメントの解除
ALTER TABLE `table_name` MODIFY `id` INT(数値) NOT NULL;


②採番し直す 

SET @N:=0; UPDATE item SET `id`=@N:=@N+1 ORDER BY `id` ASC;


③設定を元に戻す 

主キーの設定
ALTER TABLE `table_name` ADD PRIMARY KEY (`id`);
オートインクリメントの設定
ALTER TABLE `table_name` MODIFY `id` INT(数値) NOT NULL AUTO_INCREMENT;

まとめ

「レコードを削除した後にオートインクリメントを1から振り直す」が多かったからあえてこの記事を書いたのですが使う人少ないのか,頭の中に置いてあるのか….

タグ:

Comment

コメントはありません。
There's no comment.