我正在使用postgreSQL。我有一个专栏:
NOT NULL
但是,当我想插入一个空字符串的行时:
''
它不会给我一个错误并接受。如何检查插入值应为not empty
? (既不是空的也不是空的)
PS:我的专栏定义为:
"ads" character varying(60) NOT NULL
答案 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表达式不能包含子查询,也不能引用当前行的列以外的变量。