2012-11-22 37 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';