我在SQL Server中有一个带有两个数字列的表。必须至少填写这些数字字段之一。如何编写检查约束来验证这一点?0 z6 M, g U3 [: R/ D% `
6 K3 Q) W2 A1 j6 b6 N! P 解决方案: 1 C3 T! d7 g/ Y' O- a n4 f1 ~ ; L! g/ Z* G% {
7 u- d6 y( W/ j/ r
& V [) d- M3 P# D, I1 H g4 M 这可以通过检查约束来完成,该约束验证null值并将结果与??或匹配 ( Q' I. U# _2 ]: q. t) T4 W5 Qcreate table #t (i int% ^1 f0 V' @" e8 Z6 C0 y
, j int 4 S1 G Q4 S8 X7 @- G9 x1 D% ]! j7 V , constraint chk_null check (i is not null or j is not null))7 q$ S- Q9 M' I; G* J% b
以下是测试案例 & d A. M4 \: K0 ]insert into #t values (null, null) --> error 3 }& E, C$ ^0 [1 j& `insert into #t values (1, null) --> ok( M9 K/ e- g" m! l. ?; ^" t
insert into #t values (null, 1) --> ok. j# L l7 u# h3 }! e! R1 {
insert into #t values (1, 1) --> ok