列替换法重置MySQL自增长ID排序

MySQL数据库中删除了一部分数据,导致自增 id 列展示很丑,逼死强迫症。
这里推荐一个列替换方法:

删除原来列,重新建立 id 列

#创建存储过程,请修改相应表参数
CREATE PROCEDURE PRO_REBUILD_ID()
BEGIN
    DECLARE t_error INTEGER;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error = 1;

    START TRANSACTION;
        #1.将表里的 id 列,取消自增,取消主键
        ALTER TABLE test_tab MODIFY COLUMN id INT (11) NOT NULL FIRST, DROP PRIMARY KEY;
        #2.新增 id2 列,带上自增、主键。名字可以随意,别与原表重复
        ALTER TABLE test_tab ADD COLUMN id2 INT (11) NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id2);
        #3.删除旧 id 列
        ALTER TABLE test_tab DROP COLUMN id;
        #4.将 id2 修改为 id 列
        ALTER TABLE test_tab CHANGE COLUMN id2 id INT (11) NOT NULL AUTO_INCREMENT FIRST;
       
        IF t_error = 1 THEN
            ROLLBACK;
        ELSE
            COMMIT;
        END IF;
END

注:上述代码创建了一个存储过程,直接调用即可 CALL PRO_REBUILD_ID();
如果您的表 id 与其他表有关联,请勿使用本方法随意改动,后果自负!
本文纯属强迫症患者无聊表现,部分思路源于互联网!

Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注