繁体   English   中英

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

[英]oracle - drop a constraint defined within

我有一个Oracle查询-

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

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

ALTER TABLE registration drop constraint occupation;

但是由于我还没有定义约束名称,所以它说无效的约束名称。 有什么办法可以删除约束吗? 我想我可以更改表并添加约束的名称,然后将其删除,但是还有其他方法吗?

运行此查询:

select * from all_constraints where table_name = 'REGISTRATION';

然后,您将找到约束名称。

编辑:我也建议您有一个表Occupations并用外键替换当前约束。 (如果您已经想这样做,请向我道歉)。 此外,归一化后,职业可能具有ID,并且应该在这些ID上定义外部对象。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM