postgresql - 请求默认值的 NOT NULL 约束

标签 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;

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

最佳答案

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

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

关于postgresql - 请求默认值的 NOT NULL 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34792858/

相关文章:

python - 密码错误可以访问django中的数据库

sql - 为什么 postgres 表中的 xmax 系统列对于未删除的行不为零?

python-3.x - Python数据保存性能

django - Redshift 作为 Web 应用后端?

amazon-web-services - Amazon Redshift 可以自动输入 Kinesis Firehose 吗?

postgresql - 无法使用wix工具集创建postgresql数据库

postgresql - 从 PostgreSQL 中的 TRIGGER 返回错误消息

postgresql - Redshift 错误: relation "Temp table" does not exist

amazon-redshift - Insert into() (Amazon Redshift) 上不考虑标识列

mysql - 使用 SQL 选择动态 Unix 纪元时间