删除然后添加约束在oracle中失败

mR_*_*r0g 6 sql oracle

我正在尝试将主键约束移动到oracle中的不同列.我试过这个:

ALTER TABLE MY_TABLE
DROP CONSTRAINT c_name;

ALTER TABLE MY_TABLE
ADD CONSTRAINT c_name PRIMARY KEY
(
  "COLUMN_NAME"
) ENABLE;
Run Code Online (Sandbox Code Playgroud)

这在添加约束上失败,错误表明约束已经存在,即使我刚刚删除它.任何想法为什么会这样

Tho*_*Low 11

如果原始约束是主键约束,Oracle会创建一个索引来强制执行约束.此索引的名称与约束相同(在您的示例中为C_NAME).您需要将索引与约束分开删除.所以你需要做一个:

ALTER TABLE <table1> DROP CONSTRAINT C_NAME;
DROP INDEX C_NAME;

ALTER TABLE <table1> ADD CONSTRAINT C_NAME PRIMARY KEY
( COLUMN_2 ) ENABLE;
Run Code Online (Sandbox Code Playgroud)