sql - 索引 View 的两列上的唯一聚集索引

标签 sql sql-server

我正在尝试在没有唯一 ID 的表上设置索引 View 。它有两个唯一的标识符,如果组合起来,它的行将是唯一的。当我在 MSDN 上发现一个线程时,我在实际创建索引 View 所需的唯一聚集索引时遇到了麻烦,人们都同意可以为索引 View @ http://social.msdn.microsoft.com/Forums/en/transactsql/thread/f2c99845-3af1-46e8-9b52-363c24988744 创建 2 列的唯一聚集索引。

但对于我的生活,无法弄清楚如何创建它。我正在处理这个查询,但它似乎并没有解决它。

CREATE UNIQUE CLUSTERED INDEX  [PK] ON MyView
(
MyId1, MyId2
)

错误:

The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.MyView' and the index name 'PK'. The duplicate key value is (71cd9b68-1a9e-47bc-bc6b-0008b230a6d8, 0e64aa3a-0631-4caf-82d9-73609ee79b19).

列为重复项的两个 ID 是来自 MyId2 的 ID。

那么,我如何在这里创建唯一的聚集索引?

最佳答案

嗯,错误消息似乎表明有多个记录,其中 MyId1 = 71cd9b68-1a9e-47bc-bc6b-0008b230a6d8MyId2 = 0e64aa3a-0631-4caf-82d9-73609ee79b19 .

我建议运行一个仅根据该条件进行选择的查询,并确认这只返回一条记录。如果它返回更多,则无法在这两列上重新创建 UNIQUE 约束,除非消除重复项。

关于sql - 索引 View 的两列上的唯一聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888214/

相关文章:

MySQL 左连接错误 #1064

java - 如果我想让我的 nvarchar 类型在 sql server 中按与它们在 java 中使用 unicode 时相同的顺序排序,应该使用什么排序规则

sql-server - Gradle无法解析:com.microsoft.sqlserver:sqljdbc4:4.0

java - 使用 jtds 连接到 SQL Server 2008 时,e.getMessage() 返回 null

sql - 在 SQL Server 的更新语句中使用随机记录更新表?

根据许多 int (0/1) 更新 varchar 的 MySQL 触发器

SQL 查询 - 列表字段

sql - “System.Guid”失败,因为具体化值为空。结果类型的泛型参数或查询必须使用可以为 null 的类型

sql - postgres 表权限不允许用户创建/选择 View

mysql - 如何在 Multi-Tenancy 应用程序中进行查询?