5
我有一个表中有两个数字列的SQL Server。至少必须填写其中一个数字字段。我如何编写一个检查约束来验证这一点?我需要一个检查约束两列,至少有一个不能为空
我有一个表中有两个数字列的SQL Server。至少必须填写其中一个数字字段。我如何编写一个检查约束来验证这一点?我需要一个检查约束两列,至少有一个不能为空
这可以用验证空值,并用结果或
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
末的答案相匹配的检查约束来实现,但这里是一个解决方案对于任何数量的列来检查Sql Server:
CONSTRAINT CK_one_is_not_null CHECK (COALESCE(col1, col2, col3) IS NOT NULL)
可能的重复[[列之间的两列之一s应该不是NULL。如何在模式中执行它?](http://stackoverflow.com/questions/7017871/one-of-the-column-between-two-columns-should-be-not-null-how-to-enforce-it -in-s) – JohnnyHK 2016-03-10 00:16:24
@JohnnyHK不重复,因为这个问题是关于'两个中的至少一个',而且一个关于'只有一个' – nahab 2017-03-15 10:46:34