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

ORACLE约束以允许Null值,IF

强才捷
2023-03-14
问题内容

我是第一次使用oracle,我有一个名为ExpenseReport的表,该表存储有关费用的详细信息。

我希望Null允许ApprUserNo,如果ERStatus =’PENDING’,将不胜感激,我一直在努力整理整个上午

CREATE TABLE ExpenseReport 
(
  ERNo           NUMBER(10) NOT NULL,
  ERDesc         VARCHAR2(255) NOT NULL,
  ERSubmitDate   DATE NOT NULL,
  ERStatusDate   DATE NOT NULL,
  ERStatus       VARCHAR2(8) DEFAULT 'PENDING' NOT NULL,
  SubmitUserNo   NUMBER(10) NOT NULL,
  ApprUserNo     NUMBER(10) NOT NULL CONSTRAINT BEN_Check CHECK (ERStatus LIKE('PENDING')),
  UsersUserNo    NUMBER(10) NOT NULL,
  AssetAssetNo   NUMBER(10) NOT NULL,
  PRIMARY KEY (ERNo),
  CONSTRAINT Check_ER_Date CHECK (ERStatusDate >= ERSubmitDate),
  CONSTRAINT ERStatus_Null_Exception CHECK (IF ERStatus = 'PENDING',AppUserNo = NULLABLE),
  CONSTRAINT ERStatus_Option CHECK (ERStatus = 'PENDING','APPROBED','DENIED')
)

问题答案:

您需要重新形成约束。

首先,如果您希望一个字段保留空值,而不考虑其他任何规则,则该字段必须为可空字段。

ApprUserNo     NUMBER(10)   NULL,   -- No Check Constrain

其次,创建一个约束,说ApprUserNo不能为NULL,除非 ErStatus = 'PENDING'

CONSTRAINT ERStatus_Null_Exception CHECK (AppUserNo IS NOT NULL OR ERStatus = 'PENDING'),


 类似资料:
  • 主要内容:Oracle NOT NULL示例在本教程中,您将学习如何使用Oracle 约束强制列不接受值。 Oracle 约束指定列不能包含值。 Oracle 约束是通常在语句的列定义中使用的内联约束。 可以通过使用ALTER TABLE语句将约束添加到现有表。 在个语句中,在应用约束之后,不能包含任何值。 Oracle NOT NULL示例 以下声明创建表: 表有三列:附加费用,附加费名称和金额。 列是由约束指定的表的主键列,因此,Ora

  • 我正在考虑从Hibernate转移到jOOQ,但我找不到例如如何在Hibernate中对这样的进行Pattern约束: 在jOOQ我该怎么做?

  • 问题内容: 我的SQL模式是 MySQL允许重复以下语句,从而导致重复。 尽管有 为什么可以忍受,我如何制止它? 问题答案: 警告:此答案已过时。 从MySQL 5.1开始,不支持BDB。 这取决于。不允许使用多个值,但即使使用也允许多个。

  • 我预计我的< code>UICollectionView会有问题,基本上当我清除约束时,它会完美地滚动,尽管我无法到达底部(但那是另一天的事情),但是宽度太大了,我只能看到我的< code>UICollectionView的左半部分。 现在,当我设置使其适合屏幕时,它将不再滚动。即使UIRefreshControl也不会触发。 我没有办法了,有人有线索吗?或者解决办法? 非常感谢! 编辑:它不会滚

  • 问题内容: 给定一个PostgreSQL表,该表具有一个名为的列和一个约束,如下所示: 在这种情况下,我可以提取有关此约束的信息: 但是是否有可能编写一个专门返回未决,成功,失败的查询? 能够在我的应用程序中记住此查询的结果,而不需要维护重复的副本,将是很棒的。 问题答案: 您可以查询系统目录,例如: 使用以下函数 解压缩 字符串:

  • 问题内容: 我有一个存储产品代码的字段。该代码是唯一的,但是某些产品根本没有代码。我无法发明代码,因为它们是提供商代码。 在MySQL中这种约束可能吗? 我是一个存储过程和触发器的菜鸟,所以如果解决方案涉及其中之一,请耐心等待。 更新:列不为空。这就是为什么我无法做到这一点。 问题答案: 是的,您可以这样做。参见MySQL参考(版本5.5)。 UNIQUE索引会创建约束,以使索引中的所有值都必须不