我需要对两列进行检查约束,至少有一列不能为空

时间:2014-09-29 14:38:04

标签: sql sql-server-2012

我在SQL Server中有一个包含两个数字列的表。必须至少填充其中一个数字字段。如何编写检查约束来验证这一点?

2 个答案:

答案 0 :(得分:22)

这可以通过检查约束来完成,该约束验证空值并将结果与​​或

匹配
create table #t (i int
               , j int
               , constraint chk_null check (i is not null or j is not null))

以下是测试用例

insert into #t values (null, null) --> error
insert into #t values (1, null) --> ok
insert into #t values (null, 1) --> ok
insert into #t values (1, 1) --> ok

答案 1 :(得分:5)

最近回答,但这里是Sql Server的一个解决方案,可以检查任意数量的列:

CONSTRAINT CK_one_is_not_null CHECK (COALESCE(col1, col2, col3) IS NOT NULL )