Oracle约束错误

时间:2014-07-31 15:26:48

标签: sql oracle

我有一个表x,并添加了一个abc数据类型的新列number。新列成功将空值加载到表x中。

当我尝试使用not null约束添加相同的列时,它会给出错误:“table必须为空以添加强制(非空)列”

我预计会出现错误,因为由于没有数据,我无法使用not null约束。但是,没想到这个错误。为什么表必须为空才能添加该约束?有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

这是因为创建列后会立即违反null约束。您可以提供默认值。

由于缺少行,空表不会出现此问题。

答案 1 :(得分:0)

如果您表中没有数据,则不会违反NOT NULL约束。但是,如果您至少有一行,则违反了约束,因为数据库必须为每一行创建一个列值NULL

您可以使用默认值来解决此问题:

ALTER TABLE tablename
ADD column_name NUMBER NOT NULL
DEFAULT '*';