【问题标题】:Index: Avoid duplicates in table when Status = 'S'索引:当 Status = 'S' 时避免表中的重复
【发布时间】:2019-10-28 12:20:48
【问题描述】:

只有当 status = 'S' 时,有没有办法避免重复行? 示例:

我尝试创建一个“唯一”索引,但是当 status = 'N' 它应该允许重复时,它不能正常工作。

有什么建议可以避免 SQL 中的重复吗?

【问题讨论】:

    标签: sql sql-server indexing duplicates


    【解决方案1】:

    是的,你可以使用filtered index

    CREATE UNIQUE INDEX UIX_name ON tab(fk_client) WHERE status = 'S';
    

    【讨论】:

    • 哇...在无法编写/实现约束时使用索引实现约束。这违反了我的一项基本规则。丑陋,但不能否认它有效。我印象深刻。 +1
    • @TheImpaler 好吧,部分索引适合这种情况。 Partial unique index:This provides a mechanism for enforcing uniqueness across some subset of the rows in a table.
    • 我有“使用约束,而不是索引来强制约束”的口头禅。但这一个显然打破了这个规则。我猜你每天都会学到新东西。
    • 为什么有这个规则呢?至少在 SQL Server 中,唯一约束是通过唯一索引强制执行的,因此区别对我来说是人为的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 2021-04-05
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多