我的意思是:我可以确保只有一个列包含值吗?
答案 0 :(得分:14)
是的,您可以使用CHECK约束:
ALTER TABLE YourTable
ADD CONSTRAINT ConstraintName CHECK (col1 is null or col2 is null)
根据您的评论,如果许多列是独占的,您可以像这样检查它们:
case when col1 is null then 0 else 1 end +
case when col2 is null then 0 else 1 end +
case when col3 is null then 0 else 1 end +
case when col4 is null then 0 else 1 end
= 1
这表示四列中的一列必须包含值。如果它们都可以为NULL,只需检查<= 1
。