SQL Not Empty而不是Not NULL

时间:2011-10-31 07:59:31

标签: sql postgresql notnull

我正在使用postgreSQL。我有一个专栏:

NOT NULL

但是,当我想插入一个空字符串的行时:

''

它不会给我一个错误并接受。如何检查插入值应为not empty? (既不是空的也不是空的)

PS:我的专栏定义为:

"ads" character varying(60) NOT NULL

2 个答案:

答案 0 :(得分:18)

向列定义添加约束。例如:

ads character varying(60) NOT NULL CHECK (ads <> '')

有关详情,请参阅http://www.postgresql.org/docs/current/static/ddl-constraints.html

答案 1 :(得分:7)

current documentation of postgreSQL中找到您可以执行以下操作以实现您的目标:

CREATE TABLE distributors (
    did    integer PRIMARY KEY DEFAULT nextval('serial'),
    name   varchar(40) NOT NULL CHECK (name <> '')
);

来自文档:

  

<强> CHECK ( expression )

     

CHECK子句指定生成布尔结果的表达式    新插入或更新的行必须满足哪些插入或更新    操作成功。表达式评估为TRUE或UNKNOWN    成功。如果插入或更新操作的任何行产生一个    FALSE结果引发错误异常并插入或更新    不会改变数据库。检查约束指定为列    约束应仅引用该列的值,而a    出现在表约束中的表达式可能引用多个    列。

     

目前,CHECK表达式不能包含子查询,也不能引用当前行的列以外的变量。