我试图在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。有没有想过这个?
答案 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))