我必须将一些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中建议任何其他方法或建议我做错了吗?
答案 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;