当前位置: 首页 > 知识库问答 >
问题:

postgreSQL检查约束和空值

扶隐水
2023-03-14
Create table test(
    clientID CHAR (20),
    startDate date,
    startTime time,
    instructorNO CHAR(20),
    centreID  CHAR(20), 
    status CHAR(4) CHECK (status IN ('Fail','Pass')) NULL,
    reason VARCHAR(400),

    omitted...
    )

错误:关系“test”的新行违反了检查约束“test_status_check”详细信息:失败的行包含(5,2015-07-21,15:00:00,I7,9,NULL,NULL)。

共有1个答案

符畅
2023-03-14

编辑:我完全改变主意了。您现有的代码是有效的(null部分是不必要的)。

文件显示,

应该注意,如果check表达式的计算结果为true或null值,则满足check约束。由于如果任何操作数为null,大多数表达式的计算结果将为null值,因此它们不会阻止约束列中的null值。为了确保列不包含null值,可以使用下一节中描述的not-null约束。

 类似资料:
  • 问题内容: 我继承了一个使用MySQL的应用程序,该应用程序由PHP前端使用。编写此系统的人花了相当长的时间才能确保用户输入的代码有效- tat表示这些代码也存在于另一个表中。 当我第一次看到此消息时,我想知道为什么他没有使用CHECK约束并让dbms进行解决- 我设想有很多不同的程序会实现相同的检查,而不仅仅是dbms中的一个地方。然后我发现MySQL不支持Check约束(严格来说不是真的- 它

  • 问题内容: 我有一个用户表,例如: 和一张有工作的桌子: 可以将作业分配给用户,但只能分配给超级用户。其他用户无法分配作业。 因此,我有一个表格,通过它可以查看将哪个作业分配给了哪个用户: 但是我想创建一个检查约束,该约束引用具有的用户。 那可能吗?还是有其他解决方案? 问题答案: 这将适用于INSERTS: 然后在user_has_job表上检查约束: 适用于插入物: 但是,这是可能的: 因此,

  • PostgreSQL 约束用于规定表中的数据规则。 如果存在违反约束的数据行为,行为会被约束终止。 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。 约束确保了数据库中数据的准确性和可靠性。 约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。 以下是在 PostgreSQL 中常用的约束。 NOT NULL

  • 主要内容:选取设置检查约束的字段,在创建表时设置检查约束,在修改表时添加检查约束,删除检查约束MySQL检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。 在《MySQL默认值》和《MySQL非空约束》中讲解的默认值约束和非空约束也可看作是特殊的检查约束。 选取设置检查约束的字段 检查约束使用 CHECK 关键字,具体的语法格式如下: C

  • 主要内容:Oracle Check约束简介在本教程中,您将学习如何使用Oracle检查约束来强制域(列)的完整性。 Oracle Check约束简介 Oracle检查约束允许通过限制一列或多列所接受的值来强制执行域完整性。 要创建一个检查约束,可以定义一个返回或的逻辑表达式。 Oracle使用此表达式来验证正在插入或更新的数据。 如果表达式的计算结果为,则Oracle接受数据并进行插入或更新。 否则,Oracle将拒绝这些数据,新数据根本

  • 但是我不想显示这样的消息:“插入记录失败。需要名称”。 有什么方法可以在PostgreSQL中显示自定义错误消息吗?