为了实现以下行为,我有一个关于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)

07-24 09:46
查看更多