无主键mysql表创建主键

这是笔者在实际工作过程中遇到的问题。
背景:
由于一些原因,导致以前的数据库中的一些表是没有主键的,这样在主库执行批量删除和更新时,备库无法追上主库

那么,以前留下来的表需要重新建立主键,但是这里可能会遇到一些表,你无法选出一些字段组合,作为主键。那么这时该怎么办?

一般出现这种情况,首先你需要考虑:该数据表是否是分区表?

怎么查看是分区表还是非分区表:

语法:

SHOW CREATE TABLE 表名;

该语法可以看到建表语句,通过建表语句你可以很直观的看到是否为分区表,且分区字段是什么。

那么,回到原来的问题:如何为已建的数据表建立主键?这里就分为两种情况:分区表和非分区表。

因为,分区表的分区字段必须包含在主键内

1 非分区表

新增主键自增长id

语法:以数据库表为test_table为列

alter table test_table add id BIGINT(30);
alter table test_table change id id BIGINT(30) not null AUTO_INCREMENT PRIMARY KEY;

2 分区表

新增主键自增长id

扫描二维码关注公众号,回复: 4651649 查看本文章

语法:以数据库表为partition_table为列,该分区表的分区字段为:Day

alter table partition_table add id BIGINT(30) not null auto_increment ,add primary key(id,`Day`);

猜你喜欢

转载自blog.csdn.net/u013725394/article/details/85256497