错误:-3243 不能同时包含聚集KEY和大字段
问题复现:
CREATE TABLE XB
(
id int primary key,
name varchar2(100)
);
alter table xb add column(image clob);
问题描述:出现这种问题是因为建表时,达梦数据库会默认将主键设置为聚集索引,而表创建成功后,再向表增加大字段类型就会报错。
关键词:聚集索引
解决方法1:建表同时指定主键和创建大字段
CREATE TABLE XB
(
id int primary key,
name varchar2(100),
images clob
);
# 通过DM管理工具生成表结构,可查看到主键为NOT CLUSTER
CREATE TABLE "DMHR"."XB"
(
"id" int NOT NULL,
"name" varchar2(100) NOT NULL,
"images" CLOB,
NOT CLUSTER PRIMARY KEY("id")
) STORAGE(ON "MAIN", CLUSTERBTR) ;
解决方法2:建表指定非聚集索引,随后可任意添加大字段
CREATE TABLE XB
(
id int,
name varchar2(100),
NOT CLUSTER primary key(id)
);
alter table XB add column(image clob);
解决方法3:表已存在,修改参数
# 关闭默认主键指定CLUSTER数据库参数,动态参数
sp_set_para_value(1,'PK_WITH_CLUSTER',0);
# 添加聚集索引字段
alter table XB add column(cs int);
# 创建聚集索引,自动将主键的聚集索引变为非聚集索引
CREATE cluster INDEX index_cs ON xb(cs);
# 删掉聚集索引
drop index index_cs;
# 删除聚集索引字段
alter table XB drop column cs;
# 添加大字段
alter table XB add column(image clob);