Tsql 我应该如何在Sql Server中执行此操作(业务逻辑)?约束?
我希望向表中添加某种类型的业务逻辑约束,但不确定如何/在何处添加 我有一个包含以下字段的表Tsql 我应该如何在Sql Server中执行此操作(业务逻辑)?约束?,tsql,database-design,sql-server-2008,constraints,unique,Tsql,Database Design,Sql Server 2008,Constraints,Unique,我希望向表中添加某种类型的业务逻辑约束,但不确定如何/在何处添加 我有一个包含以下字段的表 ID整数标识 HubId整数 类别整数 无特征位 富纳查(200) 等等 所以我希望你只能有一个特色的东西,每个hubId+分类 eg. 1, 1, 1, 1, 'blah' -- Ok. 2, 1, 2, 1, 'more blah' -- Also Ok 3, 1, 1, 1, 'aaa' -- constraint error 4, 1, 1, 0, 'asdasdad' -- Ok. 5,
- ID整数标识
- HubId整数
- 类别整数
- 无特征位
- 富纳查(200)
eg.
1, 1, 1, 1, 'blah' -- Ok.
2, 1, 2, 1, 'more blah' -- Also Ok
3, 1, 1, 1, 'aaa' -- constraint error
4, 1, 1, 0, 'asdasdad' -- Ok.
5, 1, 1, 0, 'bbbb' -- Ok.
etc.
因此,要插入的第三行将失败,因为该中心和类别已经有了一个特色内容
这可能吗?您使用数据库约束来保护数据。对我来说,业务逻辑是计算、复杂逻辑或逐行处理:不是一种独特的约束 在这种情况下:
CREATE UNIQUE INDEX IX_Foo ON Mytable (HubId, CategoryId) WHERE IsFeatured = 1
因此,现在只对IsFeatured=1的数据子集检查唯一性(HubId,CategoryId),,articleId的可能重复是一个错误。我已经修好了,上图。所以已筛选的索引。。听起来很有趣。。。brb(读到了这篇文章)。。嗯,我想我的头刚爆了。你能详细说明一下过滤后的索引吗?这是“数据子集”还是“异构数据”?我觉得自己很愚蠢:(…因为这是一个索引,所以我仍然需要使用AFTER insert(和update)触发器,对吗?(索引只会加快触发器中的select查询)…那么使用检查约束+过滤索引呢?(我想如果可能的话,应该在触发器上使用检查约束)@gbn awesomesauce!!确认。我不仅可以得到一个索引(帮助提高查询速度),还可以提供约束!你爸爸是谁?(他是干什么的)。干杯,伙计!哦,这是过滤索引的一个很好的用途。