回答

收藏

我需要对两列进行检查,至少有一个不能为null

技术问答 技术问答 213 人阅读 | 0 人回复 | 2023-09-14

我在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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则