某些列应全部填充或全部为空
Some columns should all be filled or all should be nulls
我的 table(10 列)有 4 列(A、B、C、D)应该全部为空或全部填充。
我尝试按以下方式进行:
constraint chk_same check (A is not null AND B is not null And C is not null AND is not null) OR (A is null AND B is null And C is null AND D is null)
看起来很糟糕,有没有 better/easier 的方法?
你的方法很好。更通用的方法是计算 NULL
值的数量并检查:
constraint chk_same
check ( ((case when A is null then 1 else 0 end) +
(case when B is null then 1 else 0 end) +
(case when C is null then 1 else 0 end) +
(case when D is null then 1 else 0 end)
) in (0, 4)
) ;
这更通用,因为您可以轻松检查 4 列中的 2 列或 4 列中的 3 列是否具有 NULL
值。
我的 table(10 列)有 4 列(A、B、C、D)应该全部为空或全部填充。
我尝试按以下方式进行:
constraint chk_same check (A is not null AND B is not null And C is not null AND is not null) OR (A is null AND B is null And C is null AND D is null)
看起来很糟糕,有没有 better/easier 的方法?
你的方法很好。更通用的方法是计算 NULL
值的数量并检查:
constraint chk_same
check ( ((case when A is null then 1 else 0 end) +
(case when B is null then 1 else 0 end) +
(case when C is null then 1 else 0 end) +
(case when D is null then 1 else 0 end)
) in (0, 4)
) ;
这更通用,因为您可以轻松检查 4 列中的 2 列或 4 列中的 3 列是否具有 NULL
值。