现状描述
直接删除聚集主键,则会报错“试图删除聚集主键”。聚集主键索引无法直接删除,会提示“没有删除表[xx]上索引的权限”。
解决办法
两种办法:
第一种:在表上新建一个聚集索引,那么聚集主键索引会变为非聚集,这样可以直接删除主键和索引;
第二种:重新建表,建表时显示指定主键为非聚集;或者在建表之前修改ini参数PK_WITH_CLUSTER为0,这样默认创建主键时为非聚集型;
具体操作如下:
第一种方法:
CREATE TABLE tab1 (A INT PRIMARY KEY,B VARCHAR,C VARCHAR);
---首先创建新的聚集索引
CREATE CLUSTER INDEX IDX01 ON tab1(b);
---然后删除主键约束,主键索引会自动删除(无法直接删除主键索引)
alter table tab1 drop constraint CONS134218785;
---删除新建的聚集索引
drop index IDX01;
---更改主键为非聚集主键
alter table tab1 add NOT CLUSTER primary key(A);
第二种方法:
(1)创建表时指定主键为非聚集主键
CREATE TABLE tab1 (A INT NOT CLUSTER PRIMARY KEY,B VARCHAR,C VARCHAR);
(2)建表之前修改PK_WITH_CLUSTER参数值为0
SP_SET_PARA_VALUE(1,'PK_WITH_CLUSTER',0);
CREATE TABLE tab2 (A INT PRIMARY KEY,B VARCHAR,C VARCHAR);
更多资讯请上达梦技术社区了解:https://eco.dameng.com