删除全局临时文件 table 不会删除其索引
Dropping a global temp table does not drop its index
问题总结:
我创建了一个全局临时文件 table,然后在 table 上创建了一个聚集索引(添加了一个主键聚集约束)。我删除了 table 假设它也会删除索引。然后我毫无问题地重新创建了同名的 table 。然后,当我尝试用相同的名称重新创建相同的索引时,出现错误:
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.##MyTempTable' and the index name 'PK_TempSampleID'.
问题详情:
我需要创建一个全局临时文件 table 并使用以下命令以特定顺序将记录加载到此 table 中:
SELECT FROM SomeTable INTO ##MyTempTable WHERE SomeCondition
ORDER BY这里不做这个工作,所以我创建了一个聚簇索引(主键聚簇约束)。这样就成功了,我的记录按相应的字段排序。
但是,我遇到了一个不同的问题:我删除了 table 并重新创建它没有问题,但是当我尝试重新创建索引时出现了上述错误。
我尝试使用以下方法删除索引:
DROP INDEX PK_TempSampleID ON ##MyTempTable
我收到了这条错误信息:
Cannot drop the index '##TempFormattedSnapshot.PK_TempSampleID', because it does not exist or you do not have permission.
我研究了这个论坛和其他论坛上的帖子,似乎所有人都建议删除临时 table 时 table 上的索引也会被删除。我的经验告诉我并非如此。
错误信息
The CREATE UNIQUE INDEX statement terminated because a duplicate key
was found for the object name 'dbo.##MyTempTable' and the index name
'PK_TempSampleID'.
表示您尝试为其创建唯一索引的列中存在重复值。换句话说,并非所有值都是唯一的。
与之前存在的同名索引无关
当您删除 table 时,table 上的所有索引也会被删除。
你还有一个问题,不在本题讨论范围之内。你说 "load records into this table in a particular order"。你最好问另一个问题来解释你想要达到的目标,因为没有 "inserting rows into a table in a particular order" 这样的东西。您唯一可以做的就是在插入行时以特定顺序生成 IDENTITY
值。
总之,这不是本题的重点
问题总结:
我创建了一个全局临时文件 table,然后在 table 上创建了一个聚集索引(添加了一个主键聚集约束)。我删除了 table 假设它也会删除索引。然后我毫无问题地重新创建了同名的 table 。然后,当我尝试用相同的名称重新创建相同的索引时,出现错误:
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.##MyTempTable' and the index name 'PK_TempSampleID'.
问题详情:
我需要创建一个全局临时文件 table 并使用以下命令以特定顺序将记录加载到此 table 中:
SELECT FROM SomeTable INTO ##MyTempTable WHERE SomeCondition
ORDER BY这里不做这个工作,所以我创建了一个聚簇索引(主键聚簇约束)。这样就成功了,我的记录按相应的字段排序。
但是,我遇到了一个不同的问题:我删除了 table 并重新创建它没有问题,但是当我尝试重新创建索引时出现了上述错误。
我尝试使用以下方法删除索引:
DROP INDEX PK_TempSampleID ON ##MyTempTable
我收到了这条错误信息:
Cannot drop the index '##TempFormattedSnapshot.PK_TempSampleID', because it does not exist or you do not have permission.
我研究了这个论坛和其他论坛上的帖子,似乎所有人都建议删除临时 table 时 table 上的索引也会被删除。我的经验告诉我并非如此。
错误信息
The CREATE UNIQUE INDEX statement terminated because a duplicate key was found for the object name 'dbo.##MyTempTable' and the index name 'PK_TempSampleID'.
表示您尝试为其创建唯一索引的列中存在重复值。换句话说,并非所有值都是唯一的。
与之前存在的同名索引无关
当您删除 table 时,table 上的所有索引也会被删除。
你还有一个问题,不在本题讨论范围之内。你说 "load records into this table in a particular order"。你最好问另一个问题来解释你想要达到的目标,因为没有 "inserting rows into a table in a particular order" 这样的东西。您唯一可以做的就是在插入行时以特定顺序生成 IDENTITY
值。
总之,这不是本题的重点