MySQL 在表无主键且表里字段都不能作为主键,如何新增有序UUID为主键

MySQL表无主键、表里字段都不能作为主键,如何新增主键


前言

MySQL表无主键、表里字段都不能作为主键,如何新增有序UUID为主键?
原本数据量很大,不想用主键自增且不想用无序的UUID 情况下,本文介绍了如何使用UUID()且使它有序的一种思路。

如果你使用的MySQL 8.0 以上版本,可以直接使用 uuid_to_bin();
本文主要介绍了 MySQL 5.x 的版本。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用步骤

-- 将 my_table 拷贝 my_table_backup 的新增一个字段;
Alter TABLE  my_table_backup ADD id varchar(50) first;

-- 如果是MySQL 8.0以上 就可以使用直接使用uuid_to_bin(),就只需要下面一步。
-- 将有无主键的表 my_table 的数据迁移到 my_table_back 
INSERT INTO my_table_backup (id,originalId,contractId,remark)
SELECT uuid() as id, originalId,contractId,remark
FROM my_table order by createTime;

-- 将UUID 修改为特定的格式;手动实现 uuid_to_bin() 函数的逻辑。
UPDATE my_table_backup AS t1
JOIN (
select 
CONCAT(
    SUBSTR(t1.id, 15, 4),
    SUBSTR(t1.id, 10, 4),
    SUBSTR(t1.id,  1, 8),
    SUBSTR(t1.id, 20, 4),
    SUBSTR(t1.id, 25) ) sortId,
t1.*  FROM my_table_backup t1
) AS subquery ON t1.id = subquery.id
SET t1.id = subquery.sortId;

-- 将新增的字段设置为主键
alter table my_table_backup add primary key(id);


总结

参考文章
MySQL中UUID介绍
https://blog.csdn.net/qq_62982856/article/details/127963602

MySQL中存储UUID的最佳实践
https://blog.csdn.net/gt9000/article/details/88240649

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值