oracle - 删除在其中定义的约束

时间:2012-11-22 06:21:19

标签: oracle oracle10g

我有一个oracle查询 -

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

现在我需要删除检查约束,所以我使用以下查询 -

ALTER TABLE registration drop constraint occupation;

但由于我没有定义约束名称,因此它表示无效的约束名称。有没有办法删除约束?我想我可以改变表并添加约束的名称,然后删除它,但还有其他方法吗?

2 个答案:

答案 0 :(得分:1)

运行此查询:

select * from all_constraints where table_name = 'REGISTRATION';

你会找到约束名。

编辑:我还建议您使用表Occupations并使用外键替换当前约束。 (如果你已经想要这样做,请向我道歉)。此外,规范化,职业可能有ID,外国人应该在这些ID上定义。

答案 1 :(得分:0)

尝试查询CONSTRAINT_NAME的USER_CONSTRAINTS表,它必须为您创建的约束生成系统名称。

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