gpt4 book ai didi

SQL 我可以在表上有 "conditionally unique"约束吗?

转载 作者:行者123 更新时间:2023-12-02 09:48:17 25 4
gpt4 key购买 nike

在我的职业生涯中,我曾多次遇到过这个问题,但我本地的同行似乎都无法回答这个问题。假设我有一个表,其中有一个“描述”字段,该字段是候选键,但有时用户会在过程中途停止。因此,对于 25% 的记录,该值可能为 null,但对于所有非 NULL 的记录,它必须是唯一的。

另一个示例可能是一个必须维护记录的多个“版本”的表,并且一个位值指示哪一个是“事件”版本。因此,“候选 key ”始终会被填充,但可能存在三个相同的版本(事件位为 0),并且只有一个版本是事件的(事件位为 1)。

我有替代方法来解决这些问题(在第一种情况下,在存储过程或业务层中强制执行规则代码,在第二种情况下,使用触发器填充存档表并在需要时对表进行 UNION历史)。我不需要替代方案(除非有明显更好的解决方案),我只是想知道是否有任何 SQL 风格可以通过这种方式表达“条件唯一性”。我正在使用 MS SQL,所以如果有办法做到这一点,那就太好了。我主要只是在学术上对这个问题感兴趣。

最佳答案

如果您使用的是 SQL Server 2008,索引过滤器可能是您的解决方案:

http://msdn.microsoft.com/en-us/library/ms188783.aspx

这就是我使用多个 NULL 值强制执行唯一索引的方法

CREATE UNIQUE INDEX [IDX_Blah] ON [tblBlah] ([MyCol]) WHERE [MyCol] IS NOT NULL

关于SQL 我可以在表上有 "conditionally unique"约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283347/

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