【发布时间】:2013-08-09 12:11:53
【问题描述】:
我有一个有 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
即如果col1 和col2 不为空,则col3 应为null,反之亦然
虽然我对 SQL 和 SQL Server 很陌生,但不确定如何实际实现它,或者即使它可以/应该实现?
我想也许:
CHECK ( (col1 NOT NULL OR col2 NOT NULL AND col3 NULL) OR
(col3 NOT NULL AND col1 NULL AND col2 NULL) )
但我不确定括号是否可以用来对这样的逻辑进行分组?如果没有,如何最好地实施?
【问题讨论】:
-
不,我的表在一个实时服务器上,还有很多其他的东西可以使用,所以我不想搞砸了:O
-
你没有同等的开发环境吗?
-
不,也没有办法在这里设置,否则我将如何开始(也正如我提到的我在 SQL 方面非常新,不知道从哪里开始设置 SQL 服务器或数据库从头开始)
-
是的,你可以做到,但有一件事情会引起人们的注意——如果你创建它,然后从对象生成一个脚本,你的包围和布局可能看起来不同。我不确定它们是如何存储的,但它不是作为字符串,因此当重新生成字符串时,只会添加严格必要的括号。
-
SQL Server Developer Edition 如果您直接从 MS 购买,则需要 60 美元(您可以在其他地方找到更便宜的 - 在 Newegg 上 50 美元,在亚马逊上更便宜),您可以将它安装在您的工作站上。您需要一个非生产环境来学习和测试事物。
标签: sql sql-server check-constraints