某些行的SQL Server表检查逻辑失败
我有一个包含5列的SQL Server表某些行的SQL Server表检查逻辑失败,sql,sql-server,Sql,Sql Server,我有一个包含5列的SQL Server表 KeyInstn, KeyFndg, KeyIndex, KeyGeographyTree, KeyDevelopmentEntityRole 我试图实现的是通过应用SQL Server表检查仅允许以下行: 当仅填充KeyGeographyTree时,则KeyInstn、KeyFndg、KeyIndex必须为空,并且KeyDevelopmentEnityRole必须等于12 填充KeyInstn时,可以填充KeyGeographyTree,但其他两列K
KeyInstn, KeyFndg, KeyIndex, KeyGeographyTree, KeyDevelopmentEntityRole
我试图实现的是通过应用SQL Server表检查仅允许以下行:
KeyGeographyTree
时,则KeyInstn、KeyFndg、KeyIndex
必须为空,并且KeyDevelopmentEnityRole
必须等于12KeyInstn
时,可以填充KeyGeographyTree
,但其他两列KeyIndex,KeyFndg
必须为空KeyIndex
和KeyGeographyTree
时,则KeyInstn和KeyFndg
必须为空,或者当填充KeyFndg
和KeyGeographyTree
时,则KeyInstn
和KeyIndex
必须为空KeyInstn、KeyFndg、KeyIndex
,但是KeyGeographyTree
可以单独填充,也可以与其他3列中的任何一列组合填充
这是我写的表格检查,我正在调整它:
ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 1
OR (KeyGeographyTree IS NOT NULL AND KeyDevelopmentEntityRole = 12))
以下情况不应通过,因为目前正在通过
下表检查满足所有情况:
(ISNUMERIC(KeyInstn)+ISNUMERIC(KeyFndg)+ISNUMERIC(keyindg)=1
和KeyDevelopmentEntityRole 12)或(ISNUMERIC(KeyInstn)+ISNUMERIC(KeyFndg)
+ISNUMERIC(KeyIndex)=0和ISNUMERIC(KeyGeographyTree)=1
和KeyDevelopmentEntityRole=12)