我有一个表x
,并添加了一个abc
数据类型的新列number
。新列成功将空值加载到表x
中。
当我尝试使用not null
约束添加相同的列时,它会给出错误:“table必须为空以添加强制(非空)列”
我预计会出现错误,因为由于没有数据,我无法使用not null
约束。但是,没想到这个错误。为什么表必须为空才能添加该约束?有人可以解释一下吗?
答案 0 :(得分:1)
这是因为创建列后会立即违反null约束。您可以提供默认值。
由于缺少行,空表不会出现此问题。
答案 1 :(得分:0)
如果您表中没有数据,则不会违反NOT NULL
约束。但是,如果您至少有一行,则违反了约束,因为数据库必须为每一行创建一个列值NULL
。
您可以使用默认值来解决此问题:
ALTER TABLE tablename
ADD column_name NUMBER NOT NULL
DEFAULT '*';