7
当我不知道约束名称时,如何在Oracle中删除“ not null”约束?
我有一个对字段具有NOT NULL约束的数据库,我想删除此约束。复杂的因素是,此约束具有系统定义的名称,并且该约束的名称在生产服务器,集成服务器和各种开发人员数据库之间不同。我们当前的过程是检入变更脚本,并且一个自动化的任务通过sqlplus针对目标数据库执行适当的查询,因此我希望可以直接发送到sqlplus的解决方案。 在我自己的数据库上,删除它的SQL将是: alter table MYTABLE drop constraint SYS_C0044566 查询all_constraints视图时可以看到约束: select * from all_constraints where table_name = 'MYTABLE' 但是我不确定如何使用SEARCH_CONDITION的LONG数据类型,或者即使知道了它的名称,也不确定如何最好地动态删除查找到的约束。 因此,如何创建一个更改脚本,可以根据其名称而不是其名称删除该约束? 编辑:@Allan的答案是一个很好的答案,但我担心(由于我缺乏Oracle专业知识),可能具有系统生成名称的任何约束都可能与它相关联,这并不是一种普遍的删除方法。约束而不必知道其名称。确实存在,在逻辑上删除该约束时,总会有一种避免必须知道系统命名约束名称的方法的方法吗?