0

尝试为我拥有的视图创建索引。问题是这不是模式绑定视图,因此使用 alter 命令进行了更改。我遇到的下一个问题是它必须是唯一聚集索引。所以我认为没问题,但是虽然我的列不包含重复的键值,但它仍然抱怨有一个。在错误中我看到:它说:“重复的键值是(2012 年 12 月 7 日上午 10:02)。”

在我的专栏中,它存储为:2012-12-07 10:02:58.710

所以因为他减少了它抱怨重复键值的粒度......我使用的命令是:

在 dbo.View_BookmarksWithCreatorName (BM_CreateDate) 上创建唯一的聚集索引 testIndex

尝试搜索它,但没有找到任何东西。我如何确保在创建索引时不会更改格式,而只是将其存储在列中?

编辑

由于它是一个现有视图,没有架构边界,我只使用了 ALTER 命令:

ALTER VIEW dbo.View_BookmarksWithCreatorName WITH SCHEMABINDING 

AS

SELECT BM_Key,BM_ID, BM_LastUpdate, BM_Caption, BM_Comment, BM_CreateDate, BM_DateTime, BM_Duration, BM_Type, BM_Value, BM_CreatorUserKey, BM_SourceID, BM_Category
FROM dbo.Bookmarks,dbo.Users 
4

1 回答 1

1

您的结果是书签和用户的笛卡尔积:

FROM    dbo.Bookmarks,dbo.Users 

相当于:

FROM    dbo.Bookmarks
        CROSS JOIN dbo.Users

即每个书签将为每个用户复制,因为没有链接两个表的标准。因此,除非您的用户表中只有一条记录,否则BM_CreateDate即使它在源表中是唯一的,也不能在视图中是唯一的。

于 2013-11-04T13:47:12.690 回答