mysql8 将主键更改为的自增主键

一 原理

MySQL 8.0 及以上,使用 ROW_NUMBER 子查询来生成新的主键,然后再更新主键。

-- 示例表和数据
CREATE TABLE my_table (
    id INT PRIMARY KEY,
    data VARCHAR(255)
);

INSERT INTO my_table (id, data) VALUES
(10, 'A'),
(20, 'B'),
(30, 'C');

-- 更新表中的主键为连续的
UPDATE my_table AS t1
JOIN (
    SELECT id, ROW_NUMBER() OVER (ORDER BY id) AS new_id
    FROM my_table
) AS t2
ON t1.id = t2.id
SET t1.id = t2.new_id;

-- 查看更新后的表数据
SELECT * FROM my_table;

二 注意事项

1 数据备份:操作前务必备份数据,以防出现意外情况。
2 外键关系:如果表中存在外键关系,在更新主键时需要特别注意外键的维护。更新完主键后,可能需要手动更新外键表中的对应值。
3 并发操作:确保在更新过程中没有并发的写操作,以防数据不一致。
通过以上步骤,你可以使用 ROW_NUMBER() 函数生成连续的主键,并直接在表上更新这些值。这个方法不需要临时表,但仍需小心操作,以确保数据的一致性和完整性。

三 使用第三方工具更改主键类型

或者使用sql 语句
直接勾选主键

ALTER TABLE my_table MODIFY COLUMN id bigint auto_increment NOT NULL COMMENT '主键';

在这里插入图片描述

相关推荐

  1. 如何PostgreSQL设置

    2024-06-17 11:16:02       25 阅读
  2. MySQL为何不连续

    2024-06-17 11:16:02       33 阅读
  3. uuid作为优缺点

    2024-06-17 11:16:02       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-17 11:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-17 11:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-17 11:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-17 11:16:02       20 阅读

热门阅读

  1. 指令选择原理与实现方式

    2024-06-17 11:16:02       9 阅读
  2. 软件测试的内容以及维度

    2024-06-17 11:16:02       7 阅读
  3. PostgreSQL 数据库选择指南

    2024-06-17 11:16:02       6 阅读
  4. MySQL UPDATE查询的用法和注意事项

    2024-06-17 11:16:02       7 阅读
  5. 据包捕获和分析工具作原理和用途

    2024-06-17 11:16:02       7 阅读
  6. 猫狗识别(超详细版)(py代码)

    2024-06-17 11:16:02       8 阅读