Oracle - 检查多列的约束

时间:2014-06-25 01:56:14

标签: sql oracle ddl check-constraints

我试图在Oracle表的多个列上添加一个检查约束,限制用户同时将NULL插入3列。但是,表中的每个列都可以独立地接受NULL,但不能同时接受3个列。

ALTER TABLE table1 ADD CONSTRAINT CK_not_null 
CHECK (col1 IS NOT NULL AND col2 IS NOT NULL AND col3 IS NOT NULL);

此检查约束不允许在三列中的任何一列中使用NULL。有没有想过这个?

1 个答案:

答案 0 :(得分:2)

此约束无法满足您的需求 - 它会检查所有三列是否为not null。您所描述的行为可以通过否定(使用not布尔运算符)所有三列 null的条件来实现:

ALTER TABLE table1 
ADD CONSTRAINT 
ck_not_null CHECK 
(NOT (col1 IS NULL AND col2 IS NULL AND col3 IS NULL))