当我不知道约束的名称时,如何在Oracle中删除“NOTNULL”约束?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有一个数据库在一个字段上有一个NOT NULL约束,我想删除这个约束。复杂的因素是这个约束具有一个系统定义的名称,并且该约束的名称在生产服务器,集成服务器和各种开发人员数据库中不同。我们目前的过程是检查变更脚本,并且一个自动化任务通过sqlplus针对目标数据库执行适当的查询,所以我更喜欢可以直接发送到sqlplus的解决方案。

在我自己的数据库中,删除它的SQL将是:

alter table MYTABLE drop constraint SYS_C0044566

当我查询all_constraints视图时,我可以看到约束条件:

select * from all_constraints where table_name = 'MYTABLE'

但我不知道如何配合工作SEARCH_CONDITIONLONG数据类型或如何最好地动态删除即使我知道它的名字查找到的约束。

那么,如何创建一个可以基于它是什么来放弃这个约束的变更脚本,而不是它的名字是什么?

提问于
用户回答回答于
alter table MYTABLE modify (MYCOLUMN null);

在Oracle中,如果为列指定了非空值,则不会自动创建空约束。同样,当列更改为允许空值时,它们会自动丢弃。

用户回答回答于

试着:

alter table <your table> modify <column name> null;

扫码关注云+社区