0

我有一个 sql 表,这是我的列,它给出了错误。当我尝试向该表添加一条具有空 active_status 的新记录时,它会给出“非空属性引用空值或瞬态值”错误。有什么想法吗?

active_status character varying(30) NOT NULL DEFAULT 'NEW'::character varying,

编辑:我创建了一个新的简单表;

CREATE TABLE mytable
(
"MyData" character varying(30) NOT NULL DEFAULT 'NEW'::character varying,
CONSTRAINT mytable_pkey PRIMARY KEY ("MyData" )
)
WITH (
 OIDS=FALSE
);
ALTER TABLE mytable
OWNER TO postgres;

当我尝试插入一个字符串时,它运行良好;

insert into mytable values('ssss');

但是当我尝试插入一个空值时,它会出错;

insert into mytable values(null);

ERROR: null value in column "MyData" violates not-null constraint
SQL state: 23502 
4

2 回答 2

2

有了这个声明:

insert into mytable values(null);

您明确要求将 NULL 值插入 MyData 列,因此您会收到错误消息。

如果你想使用默认值,你需要告诉 DBMS 这样做:

insert into mytable values (default);

顺便说一句:总是在插入语句中指定列是更好的编码风格:

insert into mytable ("MyData") values (null);

还有一件事:你应该避免使用带引号的标识符("MyData"vs. MyData),它们只是麻烦多于它的价值。

于 2013-07-29T09:11:53.060 回答
0

您需要首先创建具有 NULL 约束的列。使用默认值更新该列的所有行。将列更改为具有 Not Null 约束

于 2013-07-29T08:40:19.657 回答