如何将一组列约束为NULL或全部为NOT NULL

时间:2018-01-19 07:19:13

标签: sql oracle check-constraints

假设我有一张这样的桌子,

import { Component, OnChanges, Input } from '@angular/core';
ngOnChanges(changes: any) {
    if (changes.message != null && changes.message.currentValue != null) {
        this.ExecuteMyFunction(this.message);
    }        
}

现在,id | first name | middle name | last name 列可以是name,但如果{3}中的任何一列NULLfirst name,则所有三列都必须为NOT NULL }}

如何在Oracle中强制执行此操作?

2 个答案:

答案 0 :(得分:3)

您可以使用所需的逻辑编写检查约束。 例如:

alter table yourTable
  add constraint check_not_null check
    (   
        first_name  is not null and
        middle_name is not null and
        last_name   is not null
      OR
        first_name  is null and
        middle_name is null and
        last_name   is null
    );

答案 1 :(得分:1)

说,

alter table your_table 
  add constraint set_of_column_chk
  check (nvl2(first_name, 1, 0) + nvl2(middle_name, 1, 0) + nvl2(last_name, 1, 0) in (0, 3));