doris为unique key表新增复合主键列实现过程
原表结构
CREATE TABLE `test01` (
`live_id` varchar(200) NOT NULL COMMENT '直播ID',
`actiondate` varchar(200) NOT NULL COMMENT '开始日期',
`live_name` text NULL COMMENT '直播名称',
`live_cover_image` text NULL COMMENT '直播图片'
) ENGINE=OLAP
UNIQUE KEY(`live_id`, `actiondate`)
COMMENT 'OLAP'
DISTRIBUTED BY HASH(`live_id`, `actiondate`) BUCKETS 16;
修改原表名称
alter table test01 rename test01_bak;
创建新结构的表,新增day_delta复合主键列
CREATE TABLE `test01` (
`live_id` varchar(200) NOT NULL COMMENT '直播ID',
`actiondate` varchar(200) NOT NULL COMMENT '开始日期',
`day_delta` int(11) NOT NULL COMMENT '时间差',
`live_name` text NULL COMMENT '直播名称',
`live_cover_image` text NULL COMMENT '直播图片'
) ENGINE=OLAP
UNIQUE KEY(`live_id`, `actiondate`, `day_delta`)
COMMENT 'OLAP'
DISTRIBUTED BY HASH(`live_id`, `actiondate`, `day_delta`) BUCKETS 16;
将旧表数据插入新的表(请写明所有的列)
insert into test01 (live_id,actiondate,live_name,live_cover_image,day_delta)
select ive_id,actiondate,live_name,live_cover_image,90 as day_delta from test01_bak;
如果使用下面的插入sql会报错
insert into test01
select *,90 as day_delta from test01_bak;
-- 报错
-- Reason: column_name[day_delta], null value for not null column, type=INT. src line [];