【问题标题】:SQL Not Empty instead of Not NULLSQL 非空而不是非空
【发布时间】:2011-12-18 13:32:00
【问题描述】:

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

NOT NULL

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

''

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

PS:我的专栏定义为:

"ads" character varying(60) NOT NULL

【问题讨论】:

    标签: sql postgresql notnull


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

    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 表达式不能包含子查询,也不能引用当前行列以外的变量。

    【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2012-05-03
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多