Oni*_*ght 6 index sql-server-2005 sql-server constraint
我有一个包含以下列定义的表:
ID (INT, PK)
Name (VarChar)
Active (Bit)
Bunch_of (Other_columns)
Run Code Online (Sandbox Code Playgroud)
问:我想有一个约束Name/Active,使得我们只能有1条记录与给定的Name是Active(Active= 1),但我们也能有同样的多条记录Name是Inactive(Active= 0)。这可能吗?
我已经尝试了普通的 Unique 约束,但它们将数据集限制为仅允许 1 条记录的给定Name为Inactive.
要在 2005 年以声明方式强制执行此操作,您可以使用索引视图。
CREATE VIEW dbo.ActiveNames
WITH SCHEMABINDING
AS
SELECT Name
FROM dbo.YourTable
WHERE Active = 1
GO
CREATE UNIQUE CLUSTERED INDEX UQ_ActiveNames ON dbo.ActiveNames(Name)
Run Code Online (Sandbox Code Playgroud)