我有一个'用户'表,我想让'Phone'列独一无二。目前,“PhoneNumber”列允许为null。我正在使用以下脚本。
ALTER TABLE dbo.Users
ADD CONSTRAINT Unique_PhoneNumber
UNIQUE NONCLUSTERED (PhoneNumber)
问题是,'用户'表中有300多行。其中一半有Null值。当我运行脚本时,它说成功完成。但是,在管理工作室中刷新表约束后,约束未显示,并且在添加新用户时未应用于该列。
注意:如果我再次尝试运行脚本,则会出现重复错误,例如约束已经存在。
任何人都知道我需要做什么才能让这个专栏独一无二?
答案 0 :(得分:0)
查看sp_help
过程中的“索引”(假设SQL Server):
sp_help 'dbo.Users'
。
“唯一约束”实际上是唯一索引。如果您创建普通唯一索引,则字段中允许最多一个null
值。要从检查中排除空值,您需要创建唯一的过滤索引,如下所示:
create unique index Unique_PhoneNumber on dbo.Users(PhoneNumber) where (PhoneNumber is not null)