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

问题描述:

我有一些非唯一约束要更改为唯一约束(自数据模型生成后业务规则已更改)。有没有办法做到这一点与删除和重新创建一个独特的约束?我想在alter constraint命令中会有一个选项,但我没有找到任何东西。将非唯一索引更改为唯一索引

谢谢!

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

您不能将非唯一索引转换为唯一索引。我很难说什么不能做,我在回答SQL查询语言参考的ALTER INDEX页面,搜索UNIQUE这个词,没有找到任何相关的提示,我只看了11g,而不是10克,但是这可能在这种情况下更好,因为有存在10g中,但只在11g中记录了一些功能。)

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

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;