Tim*_*im 7 sql-server database-design
想象一下,我有一个包含3列的表格:
ID(唯一ID)描述(varchar 2000)IsDeleted(boolean)
我想添加一个唯一约束,以便所有描述都是唯一的.但仅限于活动记录,即IsDelete = false.如果用户将记录标记为已删除,则可以重新添加与已删除记录具有相同描述的记录,但不能与活动记录相同.
所以,我只想要约束来影响IsDeleted = false的记录.
蒂姆
在SQL 2008中,您可以使用带过滤器的唯一索引来执行此操作:
CREATE UNIQUE NONCLUSTERED INDEX ix_table_UNC ON table(Description) WHERE IsDeleted = 0
Run Code Online (Sandbox Code Playgroud)
在SQL 2007之前,您需要在表的视图上创建唯一索引,仅选择未删除的记录:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |