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))
我遇到了一个奇怪的情况
我使用使用 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))