我有一些非唯一約束要更改爲唯一約束(自數據模型生成後業務規則已更改)。有沒有辦法做到這一點與刪除和重新創建一個獨特的約束?我想在alter constraint
命令中會有一個選項,但我沒有找到任何東西。將非唯一索引更改爲唯一索引
謝謝!
我有一些非唯一約束要更改爲唯一約束(自數據模型生成後業務規則已更改)。有沒有辦法做到這一點與刪除和重新創建一個獨特的約束?我想在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;