某些行的sql server表检查逻辑失败

kxe2p93d  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(322)

我有一个包含5列的sql server表

KeyInstn, KeyFndg, KeyIndex, KeyGeographyTree, KeyDevelopmentEntityRole

我试图实现的是通过应用sql server表检查仅允许以下行:
仅当 KeyGeographyTree 是有人住的 KeyInstn, KeyFndg, KeyIndex 必须为null且 KeyDevelopmentEnityRole 必须等于12。
什么时候 KeyInstn 人口众多, KeyGeographyTree 但其他两列 KeyIndex, KeyFndg 必须为空。
其他两种组合,即 KeyIndex 以及 KeyGeographyTree 有人居住,那么 KeyInstn and KeyFndg 必须为null,或者 KeyFndg 以及 KeyGeographyTree 有人居住,那么 KeyInstn 以及 KeyIndex 必须为空。
换句话说,任何一列 KeyInstn, KeyFndg, KeyIndex 可以同时填充,但是 KeyGeographyTree 可以单独填充,也可以与其他3列中的任意一列一起填充。
这是我写的表格检查,我正在调整它:

ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 1 
OR (KeyGeographyTree IS NOT NULL AND KeyDevelopmentEntityRole = 12))

下列情况不应通过,目前正在通过
keyinstn=123、keygeographytree=999和keydevelopmententityrole=12
keyinstn=123,keygeographytree=null,keydevelopmententityrole=12

iszxjhcz

iszxjhcz1#

下表检查满足所有情况: (ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 1 AND KeyDevelopmentEntityRole <> 12) OR (ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 0 AND ISNUMERIC(KeyGeographyTree) = 1 AND KeyDevelopmentEntityRole = 12)

相关问题