我添加了一个新的,“NOT NULL”列到我的Postgresql数据库使用以下查询(为互联网消毒):
ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL;
每次我运行这个查询,我都会收到以下错误消息:
错误:字段“mycolumn”包含空值
我难住了。我哪里说错了?
注意:我主要使用pgAdmin III(1.8.4),但当我在终端内运行SQL时,我收到了相同的错误。
我添加了一个新的,“NOT NULL”列到我的Postgresql数据库使用以下查询(为互联网消毒):
ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL;
每次我运行这个查询,我都会收到以下错误消息:
错误:字段“mycolumn”包含空值
我难住了。我哪里说错了?
注意:我主要使用pgAdmin III(1.8.4),但当我在终端内运行SQL时,我收到了相同的错误。
当前回答
指定默认值也可以,假设默认值是合适的。
其他回答
由于表中已经存在行,ALTER语句试图将NULL插入到新创建的所有现有行的列中。您必须将该列添加为允许NULL,然后用您想要的值填充该列,然后将其设置为NOT NULL。
指定默认值也可以,假设默认值是合适的。
您要么需要定义一个默认值,要么按照Sean所说的那样,在没有null约束的情况下添加它,直到将它填充到现有行中。
这对我很有用:)
ALTER TABLE your_table_name ADD COLUMN new_column_name int;
您必须设置一个默认值。
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;