OceanBase变相修改主键方法
OceanBase表主键修改方法
·
OceanBase变相修改主键方法
:
不能,因为主键需要用于分布式存储,修改就意味着数据需要重新存储
重新建表:
- 创建表:
create table t1 (
id int,
name varchar(50),
value varchar(50),
primary key(id)
)
- 写入测试数据:
insert into t1 values (0,'张三','Z3'),(1,'李四','L4');
- 测试直接修改主键:
alter table t1 modify column id int AUTO_INCREMENT;
-- 失败: 1235 - Not supported feature or function
-- 就算表里面没有数据也会失败的
- 正确的做法:
-- 主键添加自增
create table t2 (id1 int AUTO_INCREMENT) as select * from t1 ;
alter table t1 rename to t1_bak;
alter table t2 rename to t1;
-- 如果有需要,删除原表数据
-- drop table t1_bak;
-- 换主键
create table t3 (PRIMARY KEY(name)) as select * from t1 ;
alter table t1 rename to t1_bak;
alter table t3 rename to t1;
-- 如果有需要,删除原表数据
-- drop table t1_bak;
更多推荐
所有评论(0)