Oracle 将非唯一索引更改为唯一索引

Oracle 将非唯一索引更改为唯一索引,oracle,oracle10g,constraints,unique-constraint,Oracle,Oracle10g,Constraints,Unique Constraint,我有一些非唯一的约束,我想将其更改为唯一的约束(自数据模型创建以来,业务规则已经更改)。是否有任何方法可以不作为唯一约束进行删除和重新创建?我原以为alterconstraint命令中会有一个选项,但我没有找到任何东西 谢谢 不能以您希望的方式修改约束,只能删除并重新创建约束。如果要在不停机的情况下执行此操作,请查看包。不能将非唯一索引转换为唯一索引 (很难说什么是做不到的。我的回答是基于查看SQL语言参考页面,搜索单词UNIQUE,但没有找到任何相关提示。我查看了11g而不是10g,但在这种情

我有一些非唯一的约束,我想将其更改为唯一的约束(自数据模型创建以来,业务规则已经更改)。是否有任何方法可以不作为唯一约束进行删除和重新创建?我原以为
alterconstraint
命令中会有一个选项,但我没有找到任何东西


谢谢

不能以您希望的方式修改约束,只能删除并重新创建约束。如果要在不停机的情况下执行此操作,请查看包。

不能将非唯一索引转换为唯一索引

(很难说什么是做不到的。我的回答是基于查看SQL语言参考页面,搜索单词UNIQUE,但没有找到任何相关提示。我查看了11g而不是10g,但在这种情况下可能更好,因为10g中存在一些功能,但仅在11g中记录。)

但是,可以对唯一约束使用非唯一索引。但也有一些:一个独特的索引会更小更快

create table my_table(a number);

create index my_table_index on my_table(a);

alter table my_table add constraint my_table_unique unique (a)
    using index my_table_index;

在我的情况下,只需删除并重新创建索引:

DROP INDEX index_name;
CREATE UNIQUE INDEX index_name ON table_name (col01,col02) TABLESPACE indx;