SQL Not Empty而不是Not NULL

kam*_*aci 12 sql postgresql notnull

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

NOT NULL
Run Code Online (Sandbox Code Playgroud)

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

''
Run Code Online (Sandbox Code Playgroud)

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

PS:我的专栏定义为:

"ads" character varying(60) NOT NULL
Run Code Online (Sandbox Code Playgroud)

Avo*_*ägi 18

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

ads character varying(60) NOT NULL CHECK (ads <> '')
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您更频繁地使用它,您还可以添加域:https://www.postgresql.org/docs/current/static/sql-createdomain.html (2认同)

mic*_*fra 7

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

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

从文档:

CHECK ( expression )

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

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