2009-11-13 166 views
10

我需要更新Oracle數據庫中的現有約束以在其中添加新列。修改Oracle中的唯一約束

ALTER TABLE MY_PARTNER_DETAILS 
MODIFY CONSTRAINT UQ_MY_PARTNER_DETAILS 
UNIQUE(PARTNER_CODE,PGOOD_CODE,SITE_CODE,PARTNER_PLACEMENT,PARTNER_PARTICIPATION) 

給出了錯誤:

Error at line 1 
ORA-00933: SQL command not properly ended 

與這有什麼問題?

回答

21

您應該刪除並重新創建約束。 modify constraint允許您更改約束的狀態而不是定義。

請參閱:Oracle Docs

+0

問題是約束被某些外鍵引用。所以我不能在不改變它的情況下放棄它。 – wheleph 2009-11-13 19:49:54

+0

但是,如果更改約束,則由外鍵引用的列的組合將不再是唯一的,因此您將不得不重新創建它們。 – Majkel 2009-11-13 20:02:45

+1

這兩個約束不應該是相互排斥的。因此,創建新的,修改外鍵,然後刪除舊的。 – 2009-11-13 20:08:52