SQL在创建索引时以错误的格式检索日期时间

时间:2013-11-04 13:19:38

标签: sql sql-server

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

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

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

在dbo.View_BookmarksWithCreatorName(BM_CreateDate)上创建UNIQUE CLUSTERED INDEX 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 

1 个答案:

答案 0 :(得分:1)

您的结果是书签和用户的笛卡儿产品:

FROM    dbo.Bookmarks,dbo.Users 

相当于:

FROM    dbo.Bookmarks
        CROSS JOIN dbo.Users

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