在SQL中添加检查约束

时间:2017-05-08 18:17:55

标签: sql sql-server sql-server-2008 tsql check-constraints

对于下表,

如何在SQL中添加约束以强制最多一个AddressID,其中Primary = TRUE,其中EndDate = 12/31/9999?

enter image description here

2 个答案:

答案 0 :(得分:0)

您希望在3列上创建唯一约束:AddressID,Primary,EndDate。

ALTER TABLE [YourTableName]
ADD CONSTRAINT [UniqueConstraintName] UNIQUE (AddressID, Primary, EndDate);

答案 1 :(得分:0)

这里你需要的是一个独特的索引,而不是约束;可以过滤索引,但约束不能。请尝试下面的索引创建脚本,让我知道它是怎么回事 另一点,你有一个名为PRIMARY的字段,它是SQL Server中的保留字;虽然您可以通过将字段名称括在方括号中来绕过语法问题(正如我在下面的索引脚本中所做的那样),但是如果可能的话,您可能希望尽量避免使用该命名约定。

CREATE UNIQUE INDEX idx_max_address_id
ON myTable (PK, AddressId)
WHERE [PRIMARY] = 'TRUE'
AND EndDate = '12/31/9999'
相关问题