无主键mysql表创建主键
程序员文章站
2022-06-02 15:56:06
...
这是笔者在实际工作过程中遇到的问题。
背景:
由于一些原因,导致以前的数据库中的一些表是没有主键的,这样在主库执行批量删除和更新时,备库无法追上主库。
那么,以前留下来的表需要重新建立主键,但是这里可能会遇到一些表,你无法选出一些字段组合,作为主键。那么这时该怎么办?
一般出现这种情况,首先你需要考虑:该数据表是否是分区表?
怎么查看是分区表还是非分区表:
语法:
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
。
语法:以数据库表为partition_table
为列,该分区表的分区字段为:Day
alter table partition_table add id BIGINT(30) not null auto_increment ,add primary key(id,`Day`);
下一篇: 网站优化中最全的增加网站外链的方法汇总