gpt4 book ai didi

sql-server - SQL Server 唯一约束(但只是有时)

转载 作者:行者123 更新时间:2023-12-02 16:08:10 24 4
gpt4 key购买 nike

假设我有一个包含 3 列的表格:

ID(唯一ID)描述 (varchar 2000)是否已删除( bool 值)

我想添加一个唯一约束,以便所有描述都是唯一的。但仅适用于事件记录,即 IsDelete = false。如果用户将记录标记为已删除,他们可以重新添加与已删除记录具有相同描述但与事件记录不同的记录。

所以,我只希望约束影响 IsDeleted = false 的记录。

蒂姆

最佳答案

在 SQL 2008 中,您可以使用带有过滤器的唯一索引来执行此操作:

CREATE UNIQUE NONCLUSTERED INDEX ix_table_UNC ON table(Description) WHERE IsDeleted = 0

在 SQL 2008 之前,您需要在 TableView 上创建唯一索引,仅选择未删除的记录:

CREATE VIEW dbo.vw_ActiveDescriptions WITH SCHEMABINDING
AS
SELECT Id, Description
FROM Table
WHERE IsDeleted= 0
GO
CREATE UNIQUE CLUSTERED INDEX ix_vw_ActiveDescriptions_UC ON dbo.vw_ActiveDescriptions(Description);

关于sql-server - SQL Server 唯一约束(但只是有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com