我在SQL Server中有一个包含两个数字列的表。必须至少填充其中一个数字字段。如何编写检查约束来验证这一点?
答案 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 )