oracle 中的 check 约束里面能写逻辑判断吗? 例如:当某个字段为一个值的时候,另外一个字段必须不能为nu

我在程序里做了验证的,但是数据库还是出现了不该有的情况。我想在表里加个约束,跟踪程序在哪种情况下会通过验证添加进去。

spiderrobot 你的写法应该是a必须等于2,b不能为空。不是我说的那种意思。我想要的是当a等于一个值时,b才不能为空。a等于其他的时候,b可以为空

可以,不妨自己试试
CREATE TABLE t1(a NUMBER, b NUMBER);
ALTER TABLE t1 ADD CONSTRAINT ck_a_b
CHECK ((a=2) and (b is not NULL)) ;
insert into t1 values(2,null) ;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-28
好像不行吧

这种情况一般是在程序上控制的呀,你怎么想到在约束控制呢?
第2个回答  2010-10-30
check ((a=一个值 and b is not null) or (a<>一个值))本回答被提问者采纳