我有一个有 4 列的表:
(ID (PK, int, NOT NULL), col1 (NULL), col2 (NULL), col3 (NULL))
我想添加一个CHECK
约束(我认为是表级?),以便:
if col1 OR col2 are NOT NULL then col3 must be NULL
和
if col3 is NOT NULL then col1 AND col2 must be NULL
即col3
应该是null
如果col1
并且col2
不为空,反之亦然
我对 SQL 和 SQL Server 很陌生,但不确定如何实际实现它,或者即使它可以/应该实现?
我想也许:
CHECK ( (col1 NOT NULL OR col2 NOT NULL AND col3 NULL) OR
(col3 NOT NULL AND col1 NULL AND col2 NULL) )
但是我不确定括号是否可以用来对这样的逻辑进行分组?如果没有,如何最好地实施?