我正在使用以下查询向我的Postgresql数据库添加一个新的"NOT NULL"列(已针对Internet进行了清理):

ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL;

每次运行此查询时,我都会收到以下错误消息:

ERROR:  column "mycolumn" contains null values

我被难住了.我哪里做错了?

注意:我主要使用pgAdmin III(1.8.4),但当我从终端内部运行SQL时,收到了相同的错误.

推荐答案

你必须设置一个默认值.

ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL DEFAULT 'foo';

... some work (set real values as you want)...

ALTER TABLE mytable ALTER COLUMN mycolumn DROP DEFAULT;

Sql相关问答推荐

从2个表中查找每条记录的唯一最接近的日期匹配

如何转换和汇总行数

不可能在SQL MERGE子句中引发异常

如何从多行数据中获取一行合并数据?

如果开始期间不存在PostgresSql回填数据

使用WHERE子句进行筛选时,SQL SELECT查询返回总计数

我希望以正确的升序获取SQL结果.怎样才能得到它们?

使用Kotlin Exposed SQL DSL Select 多个值并排序

返回找到的最小和最大row_number()spark SQL

Oracle中的时间戳

其中使用表名作为;行值;记录?

对现有记录进行分组

如何向 mariadb 添加外键?

用替代方案替换 SQL Cursor 以提高性能

POSTGRES to_timestamp() 假定 UTC 字符串为本地时间

在Snowflake中,如何将以逗号和连字符分隔的多个混合数值拆分成数字列表

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

如何按日期和位置对最近 3 个报告日期的 SQL 查询结果进行透视?

为数组中的每个元素从表中收集最大整数

在 MS Access 中连接相关记录