我有一个数据库对字段有一个NOT NULL约束,我想删除这个约束。复杂因素是此约束具有系统定义的名称,并且生产服务器,集成服务器和各种开发人员数据库之间的约束名称不同。我们当前的过程是检查更改脚本,自动化任务通过sqlplus对目标数据库执行适当的查询,所以我更喜欢一个可以直接发送到sqlplus的解决方案。
alter table MYTABLE drop constraint SYS_C0044566
我可以看到约束当我查询all_constraints视图:
select * from all_constraints where table_name = 'MYTABLE'
但我不知道如何使用SEARCH_CONDITION的LONG数据类型,或者如何最好地动态删除查找的约束,即使我知道它的名字。
所以,如何创建一个更改脚本,可以删除此约束基于它是什么,而不是它的名字是什么?
编辑:
@ Allan的答案是好的,但我担心(在我缺乏Oracle专业知识的情况下),可能有一个系统生成的名称的任何约束都不会与它相关联的一种方式来删除约束没有不得不知道它的名字。是否真的,总是有一种方法,以避免在逻辑删除该约束时必须知道系统命名的约束的名称?