我有一个oracle查询 -
occupation varchar2(50) CHECK(occupation IN ('student','govt_service','private','business')));
现在我需要删除检查约束,所以我使用以下查询 -
ALTER TABLE registration drop constraint occupation;
但由于我没有定义约束名称,因此它表示无效的约束名称。有没有办法删除约束?我想我可以改变表并添加约束的名称,然后删除它,但还有其他方法吗?
答案 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';