如何为一列(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)
如果ERSta是APPROVED/DENIED之外的另一个值,则将满足check子句。
如果ERSta为APPROVED或DENIED,则AUserNo不得为空。