【发布时间】:2016-09-03 02:42:23
【问题描述】:
我希望为大约 1/2 百万行左右的现有表的 1 个 int 列添加唯一约束。我还看到提到使用过滤索引。但是,如果您想稍后(或已经拥有)引用这些列的外键,创建过滤索引是否会出现问题?
如果某些行已经无效,我可以添加唯一约束吗?如果约束失败,我想停止进一步的插入。
ALTER TABLE dbo.MyTable
ADD CONSTRAINT UX_mycnstrtname UNIQUE([col1])
实际上,如果我在一列中已经有重复的记录,则上述操作将失败。
所以,使用过滤索引,就像这样:
CREATE UNIQUE NONCLUSTERED INDEX [UX_1PerX] ON [dbo].[MyTable]
(
[TableID] ASC
)
WHERE (ID > 888876)
我现在的问题是 - 这会导致引用此列 (TableID) 的外键出现任何问题吗?
【问题讨论】:
-
这里的问题是什么?如果数据不是唯一的,那么唯一约束将失败
标签: sql-server-2008 tsql