【问题标题】:Oracle - Check constraint on multiple columnsOracle - 检查多列的约束
【发布时间】:2014-06-25 01:56:13
【问题描述】:

我正在尝试在 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。对此有什么想法吗?

【问题讨论】:

  • 您可能需要使用触发器。

标签: sql oracle ddl check-constraints


【解决方案1】:

此约束无法满足您的需求 - 它会检查所有三列是否为 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多