在列的值和其他列的值之间为 UK 添加约束检查

Posted

技术标签:

【中文标题】在列的值和其他列的值之间为 UK 添加约束检查【英文标题】:Add Constraint Check for UK between a Value of a Column and other Column 【发布时间】:2011-12-08 10:32:48 【问题描述】:

这是我的目标表

T1
(
Id int not null PK,
Name nvarchar(10) not null
Flag bit not null
)

我需要一个约束检查以检查在具有相同名称的每一行中只有一行有一个真正的标志,换句话说,我需要一个英国来表示(1-真正的标志值,2-名称),相同的名称可以有一个错误标志,但其中一个可以有一个真标志。有人知道这个脚本吗?

【问题讨论】:

UNIQUE constraint controlled by a bit column的可能重复 (还有许多其他人 - 令人惊讶的是,人们发现有多少种方法可以问这个问题而不会绊倒现有的问题) @Damien_The_Unbeliever:我们需要一个更好的问题和答案唯一标识符;) 【参考方案1】:

使用过滤的唯一索引

CREATE UNIQUE NONCLUSTERED INDEX ix ON T1(Name) WHERE (Flag = 1)

【讨论】:

如何在 Alter Table 脚本中做到这一点? @dotNetist - 你没有。过滤索引是使用CREATE INDEX 而不是ALTER TABLE创建的

以上是关于在列的值和其他列的值之间为 UK 添加约束检查的主要内容,如果未能解决你的问题,请参考以下文章

将重置计数器(在列的值更改时重置)添加到视图中的 PLSQL 行

5-05约束的类型

约束的类型

Pandas/Python 检查中间值和另一列的输出值

sql中表级约束和列级约束

无论它们的顺序如何,如何检查相同的值组合