禁用ORACLE中的Not-Nullable字段以插入NULL数据

时间:2014-04-22 14:35:15

标签: sql oracle

我必须将一些NULL数据添加到一个不可为空的字段中。我查了一下: -

ALTER TABLE <table_name> DROP <default_constraint_name> ;

ALTER TABLE <table_name> ALTER COLUMN <column_name> <data_type> NULL;

ALTER TABLE <table_name> DROP COLUMN <column_name>;

但只有中间的一个似乎适合我的使用,因为我想做的只是改变而不是。但它不起作用。我正在使用Oracle 11g。你能在第二个ALTER TABLE SQL中建议任何其他方法或建议我做错了吗?

2 个答案:

答案 0 :(得分:1)

如上面的评论中所述,在以前不允许它们的列中允许NULL可能是个坏主意。已经存在的查询或代码可能依赖于该字段不能包含NULL的假设,并且如果该假设变为错误可能会遇到各种问题(如果您幸运则会出错,如果不是,则会悄悄地产生不正确或不完整的结果)。 / p>

也就是说,永久删除NOT NULL约束的语法是:

ALTER TABLE table_name MODIFY column_name NULL;

您也可以仅按另一个答案中的指示禁用约束。要执行此操作,您需要通过查询USER_CONSTRAINTS找到的约束名称。如果您希望稍后启用约束,则更有意义。

答案 1 :(得分:0)

你可以禁用约束。然后在需要时启用它。

 alter table
    table_name
 ENABLE constraint
    constraint_name;

 alter table
    table_name
 DISABLE constraint
    constraint_name;