【发布时间】:2011-12-18 13:32:00
【问题描述】:
我正在使用 postgreSQL。我有一个专栏:
NOT NULL
但是,当我想插入一行空字符串时:
''
它不会给我错误并接受。如何检查插入值应该是not empty? (不为空也不为空)
PS:我的专栏定义为:
"ads" character varying(60) NOT NULL
【问题讨论】:
标签: sql postgresql notnull
我正在使用 postgreSQL。我有一个专栏:
NOT NULL
但是,当我想插入一行空字符串时:
''
它不会给我错误并接受。如何检查插入值应该是not empty? (不为空也不为空)
PS:我的专栏定义为:
"ads" character varying(60) NOT NULL
【问题讨论】:
标签: sql postgresql notnull
为列定义添加约束。例如:
ads character varying(60) NOT NULL CHECK (ads <> '')
欲了解更多信息,请参阅http://www.postgresql.org/docs/current/static/ddl-constraints.html
【讨论】:
在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 结果引发错误异常并插入或更新 不改变数据库。指定为列的检查约束 约束应该只引用该列的值,而 出现在表约束中的表达式可能引用多个 列。
目前,CHECK 表达式不能包含子查询,也不能引用当前行列以外的变量。
【讨论】:
/current。更多信息在这里:meta.stackexchange.com/questions/108714/…