20

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

NOT NULL

但是,当我想插入一行空字符串时,如下所示:

''

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

PS:我的专栏定义为:

"ads" character varying(60) NOT NULL
4

2 回答 2

27

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

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

有关更多信息,请参阅http://www.postgresql.org/docs/current/static/ddl-constraints.html

于 2011-10-31T08:07:12.807 回答
11

在postgreSQL的当前文档中找到,您可以执行以下操作来实现您想要的:

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

从文档中:

CHECK ( expression )

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

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

于 2011-10-31T08:08:32.157 回答