【发布时间】:2012-06-04 20:54:27
【问题描述】:
我正在尝试在没有唯一 ID 的表上设置索引视图。它有两个唯一的标识符,如果组合起来对于它的行来说是唯一的。我在创建索引视图所需的唯一聚集索引时遇到了麻烦,因为我在 MSDN 上找到了一个线程,人们都同意可以从 2 列中为索引视图创建唯一聚集索引@http://social.msdn.microsoft.com/Forums/en/transactsql/thread/f2c99845-3af1-46e8-9b52-363c24988744
但是对于我的生活,无法弄清楚如何创建它。我正在处理这个查询,但它似乎没有削减它。
CREATE UNIQUE CLUSTERED INDEX [PK] ON MyView
(
MyId1, MyId2
)
错误:
CREATE UNIQUE INDEX 语句因重复键而终止 为对象名称“dbo.MyView”和索引名称“PK”找到。 重复键值为 (71cd9b68-1a9e-47bc-bc6b-0008b230a6d8, 0e64aa3a-0631-4caf-82d9-73609ee79b19)。
列为重复的两个 ID 是来自 MyId2 的 ID。
那么,我怎样才能在这里创建一个唯一的聚集索引呢?
【问题讨论】:
-
不只是在该列上重复,是
MyId1和MyId2的组合是重复的 -
运行“通过 MyId1 从 MyView 组中选择 MyId1、MyId2,MyId2 的 count(*) > 1”。这将向您显示您的重复项,因为您可能拥有的不仅仅是显示的组合。 SQL 在遇到其预期跨 MyId1、MyId2 的唯一性异常时出错。
-
为什么不直接在表上创建索引呢?为什么需要视图?
-
啊啊啊是的,那些是怎么到那里的?!谢谢大家,整理了一下,瞧,得到了我的索引视图!
标签: sql sql-server