sql非空属性错误

sql非空属性错误,sql,postgresql,Sql,Postgresql,我有一个sql表,这是我的列,它给出了错误。当我尝试向这个表中添加一个具有null active_状态的新记录时,它会给出“NOTNULL属性引用null或瞬态值”错误。有什么想法吗 active_status character varying(30) NOT NULL DEFAULT 'NEW'::character varying, 编辑:我创建了一个新的简单表格 CREATE TABLE mytable ( "MyData" character varying(30) NOT NULL

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

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 

您需要首先使用NULL约束创建列。使用默认值更新该列的所有行。使用以下语句将列更改为具有NOTNULL约束:

insert into mytable values(null);
您明确要求在MyData列中插入空值,因此会收到错误消息

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

insert into mytable values (default);
顺便说一句:始终在insert语句中指定列是更好的编码样式:

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

还有一件事:你应该避免使用带引号的标识符(
“MyData”
vs.
MyData
),它们的麻烦远远超过了它的价值。

请显示完整的错误消息和insert语句?@muistooshort这是我简单的新表。这几乎正是我要说的。也许值得将它们发送到,以获得处理默认值的其他方法。我明白了,谢谢。我删除了NOTNULL约束,但现在我如何说db to“如果用户尝试插入空值,请使用默认值插入它”。@hellzone:更改用户发送的数据的唯一方法是触发器。当然,更好的方法是不发送您不想保存在数据库中的数据。