为了实现以下行为,我有一个关于SQL约束的问题:
TableA有两列
column0和column1,其中只有一个在数据输入时可以为空:
例如。:
如果column0为空,column1不能为空
如果column1为空,column0不能为空
为此,我构建了以下SQL约束:
CONSTRAINT column01_not_null_chk
CHECK (
( column0 IS NOT NULL
AND column1 IS NULL )
OR
( column1 IS NOT NULL
AND column0 IS NULL ) )
这对我的行为正确吗?因为所有的SQL都因为这个约束而被拒绝
最佳答案
你所描述的条件意味着其中至少有一个必须有价值。因此,您的约束应纠正为:
CONSTRAINT column01_not_null_chk
CHECK (column0 IS NOT NULL OR column1 IS NOT NULL)