要求默认值的NOT NULL约束

时间:2016-01-14 15:07:46

标签: postgresql amazon-redshift

使用NOT NULL约束向我的数据库添加新列,但Redshift警告我应该定义默认值。我认为NOT NULL的意思是强制定义吗?

ALTER TABLE users add column
  name varchar(255) NOT NULL
;

结果:

[Amazon](500310) Invalid operation: ALTER TABLE ADD COLUMN defined as NOT NULL must have a non-null default expression;

有没有办法强制列不能为空?

2 个答案:

答案 0 :(得分:3)

name是确保列包含值的正确方法。 但是,由于您的表已经存在,因此已包含在其中的行将没有新NOT NULL列的值,因此它们会违反NOT NULL约束。

通过指定默认值,您可以确保为该值分配任何现有行,从而符合您的NOT NULL约束。

答案 1 :(得分:2)

如果列是DEFAULT default_expr,则必须有一个值,对吗?

为什么不添加:$scope