我遇到了一些sql的问题导致了我不希望的结果.我将来自各种表格的信息存储在另一个表格中,该表格用作网站上搜索页面的一部分.每个页面的所有页面数据以及其他页面上的其他元素(如日历等)的数据都在名为pageContentCache的表中引用.该表通常具有使用以下内容创建的索引:
alter table pageContentCache add constraint [IX_pageContentCache] PRIMARY KEY CLUSTERED ( [objectId] )
由于某种原因,对我来说似乎是一个重复的objectId,这个软件的一个实例已经开始出现问题,导致以下错误:
Msg 1505,Level 16,State 1 Procedure sp_rebuildPageContentCache,Line 50
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name ‘dbo.pageContentCache’ and the index name ‘IX_pageContentCache’. The duplicate key value is (21912).
所以,为了调试这个问题,我已经得到了将要输入到pageContentCache表中的所有数据加载到临时表#contentcache中的过程,首先,我可以看看它.
这是我开始有点困惑的地方……
将数据插入#contentcache(有两列,objectId和content)后,我可以运行以下sql语句,它将不返回任何内容:
select objectId,count(objectId) from #contentcache group by objectId having count(objectId) > 1
这不返回任何记录.如果我然后运行以下sql:
insert into pageContentCache (objectId,contentData) select objectId,content from #contentcache
这会将#contentcache中的所有数据插入到pageContentCache中,正如您所期望的那样.但是,如果我然后运行以下sql,它将返回重复项:
select objectId,count(objectId) from pageContentCache group by objectId having count(objectId) > 1
然后返回重复项:
objectId (no column name) 21912 2
没有触发器或与此表关联的任何类似的东西,而insert语句只是将数据从一个表复制到另一个表,所以…这个副本来自何处?