当前位置: 首页 > 面试题库 >

在Oracle SQL中检查约束

赵禄
2023-03-14
问题内容

我有下表Goods_In_Wagon(Goods_ID,Wagon_ID,Total_Weight)。我需要创建一些if语句检查约束,说

“如果WAGON_ID在90到99之间,则Total_Weight必须大于10。”
AND“如果WAGON_ID在100到110之间,则Total_Weight必须大于20。”
AND“如果WAGON_ID在111到120之间,则Total_Weight必须大于30。”

SQL Oracle中这是否可行,如果我该如何实现呢?


问题答案:

使用离线约束:

CREATE TABLE Goods_In_Wagon (
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (Wagon_ID NOT BETWEEN 90 AND 99 OR Total_Weight > 10)
)

如果Wagon_ID没有 90和99之间,约束传递。如果介于90和99之间,则Total_Weight必须大于10。

这样的离线约束使您可以在行级别应用约束逻辑,这意味着它可以使用任何列值。

附录
这是处理范围为Wagon_ID和的更新问题的方法Total_Weight。可能还有其他方法,但是这感觉像“最干净的”,这意味着我个人最容易阅读:)

CREATE TABLE Goods_In_Wagon(
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (
      (Wagon_ID < 90) OR
      (Wagon_ID BETWEEN 90 AND 99 AND Total_Weight > 10) OR
      (Wagon_ID BETWEEN 100 AND 110 AND Total_Weight > 20) OR
      (Wagon_ID BETWEEN 111 AND 120 AND Total_Weight > 30) OR
      (Wagon_ID > 120)
    )
)


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

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

  • 问题内容: 我上周一直在学习SQL,但是我不确定如何在检查约束中正确添加case语句。有人可以给我指点吗? 我有以下成绩表: 我想检查是否在AD之间,则必须为“ S1”,或者是否在EG之间,则为“ S2”。 我试图对此进行研究并提出后者,但是它不起作用..我是否正确构造了代码? 问题答案: 我认为您可以执行以下操作: 请在此处查看SQL Fiddle模式。 您不需要约束,因为正则表达式检查就足够了

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

  • 问题内容: 我正在JPA中对userid列强制执行唯一性约束检查,这是对user表中的所有记录强制执行的。 我的要求是,特定组织内的用户ID必须唯一,而不是在所有组织中都唯一。 如何执行此类检查? 问题答案: 您可以为唯一约束指定多个字段,请尝试: 通过这样做,您的约束条件将检查userid和Organizationid的组合是否唯一。 最好的祝福,费边

  • 我在数据库中有Consumer表,其中Consumer_type列上有check约束,如下所示: 现在,从hibernate方面,我想添加check约束注释,该注释只允许消费者类型表中的“ACCOUNT”和“ORGANIZATION”值。 为此,我应该使用哪个hibernate/jpa注释?