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

jwo*_*rin 13 oracle constraints oracle10g unique-constraint

我有一些非独特的约束,我想改变成唯一约束(业务规则自数据模型制定以来已经改变).有没有办法在删除和重新创建作为唯一约束的情况下执行此操作?我在想这个alter constraint命令会有一个选项,但我没找到任何东西.

谢谢!!

Jon*_*ler 5

您无法将非唯一索引转换为唯一索引.

(很难说什么不能做.我的答案是基于查看SQL语言参考的ALTER INDEX页面,搜索单词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;
Run Code Online (Sandbox Code Playgroud)


Joh*_*yle 4

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