两列之间的列之一应为NOT NULL。如何在架构中强制执行?

时间:2011-08-10 21:11:37

标签: sql-server sql-server-2008

我有一张表有以下的情绪

CREATE TABLE MyTable  
(  
    ID                INTEGER DEFAULT(1,1),      
    FirstIdentifier   INTEGER NULL,    
    SecondIdentifier  INTEGER NULL,  
  --.... some other fields .....    
)   

现在插入一个值时,FirstIdentifier和SecondIdentifier之间的列之一应该是 不是NULL。无论如何通过架构强制执行它?

1 个答案:

答案 0 :(得分:23)

使用CHECK constraint

可以实现这一点
CHECK (FirstIdentifier IS NOT NULL OR SecondIdentifier IS NOT NULL)

虽然CHECK约束是表的一部分(因此也是“模式”?),但它们可能不符合所需的定义。上面的CHECK不是互斥的,但可以改为这样。

快乐的编码。