gpt4 book ai didi

sql - ORACLE 约束允许空值,IF

转载 作者:行者123 更新时间:2023-12-04 23:37:05 25 4
gpt4 key购买 nike

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

我希望 ApprUserNo IF 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'),

关于sql - ORACLE 约束允许空值,IF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10009219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com