2012-11-22 38 views
1

定義我有一個Oracle查詢約束爲 -甲骨文 - 滴內

occupation varchar2(50) CHECK(occupation IN ('student','govt_service','private','business'))); 

現在我需要刪除的檢查約束,所以我使用下面的查詢 -

ALTER TABLE registration drop constraint occupation; 

,但因爲我的避風港沒有定義約束名稱,它表示無效的約束名稱。有什麼方法可以刪除約束嗎?我想我可以改變表格並添加約束的名稱,然後刪除它,但有沒有其他方式?

回答

1

運行此查詢:

select * from all_constraints where table_name = 'REGISTRATION'; 

,你會發現約束名。

編輯:我也建議你有一個表Occupations並用外鍵替換當前的約束。 (如果你已經想要這樣做,請給我道歉)。此外,規範化,職業可能有ID和國外應在這些ID上定義。

+0

它的工作原理!非常感謝! – Chandeep

+0

我已經添加了更好約束的重新調整。 –

0

請嘗試查詢CONSTRAINT_NAME的USER_CONSTRAINTS表,它必須爲您創建的約束生成一個系統名稱。

select * from USER_CONSTRAINTS 
where owner='<your_schema>' and CONSTRAINT_TYPE='C';