检查另一列 (2) 中的值的列 (1) 的约束等于 'String1' 和 'String2',将列 (1) 设置为不为 null



如何为一列(1(创建约束,该列检查另一列(2(中的值,并且等于"String1"one_answers"String2"但不等于"String3",因此将列(1这是我迄今为止尝试过的

Create Table ER(ERNo INTEGER,
ERSta Varchar2(8 CHAR) Default 'PENDING' Not Null,  
AUserNo Integer,
CONSTRAINT ERNoPK PRIMARY KEY(ERNO),
CONSTRAINT ERSta_check CHECK (ERSta IN ('PENDING', 'APPROVED', 'DENIED')),
CONSTRAINT AUserNoFK FOREIGN KEY (AUserNo) REFERENCES Users(UserNo),
CONSTRAINT AUserNo CHECK (WHEN (ERSta like('APPROVED')or ('DENIED')) THEN AUserNo not null);

所以我的问题是:由于AuserNo已经允许null,当ERSta中输入了"APPROVED"或"DENIED"时,我如何将AuserNo设置为非null?

提前感谢您的帮助。

check (ERSta NOT IN ('APPROVED', 'DENIED') or AUserNo is not null)
  1. 如果ERSta是APPROVED/DENIED之外的另一个值,则将满足check子句。

  2. 如果ERSta为APPROVED或DENIED,则AUserNo不得为空。

最新更新