Temp Table 似乎在 sql 服务器中扩展其范围的原因

Reason why a Temp Table seems to extend its scope in sql server

我遇到了一个奇怪的情况

我使用使用 select 创建的临时 table 进入类似

的技术
select *
into #MyTempTable
from TABLE

原则上 pf 的范围 #MyTempTable 仅限于进程 ID。

但即使我明确使用

drop table #MyTempTable

当我再次运行时

select *
into #MyTempTable
from TABLE

我有一个错误,临时 table 已经存在。

为什么会发生这种情况?我以前从未遇到过这个问题,我多年来一直使用这种技术。

您确定 运行 将代码放在同一个 window 中吗?如果您将 table 放到另一个 window 中,它不会正确地放下它。

我一直认为最好的做法是 运行 代码在显式创建 table(而不是 SELECT INTO)之前检查它是否存在。像这样;

IF OBJECT_ID('tempdb..#TempTable') IS NOT NULL DROP TABLE #TempTable
CREATE TABLE #TempTable (RowNumber int identity(1,1), OtherField nvarchar(max))