【问题标题】:Reason why a Temp Table seems to extend its scope in sql server临时表似乎在 sql server 中扩展其范围的原因
【发布时间】:2023-03-22 22:39:01
【问题描述】:

我遇到了一个奇怪的情况

我使用使用 select into 技术创建的临时表,例如

select *
into #MyTempTable
from TABLE

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

但即使我明确使用

drop table #MyTempTable

当我再次运行时

select *
into #MyTempTable
from TABLE

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

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

【问题讨论】:

    标签: sql-server sql-server-2012 temp-tables


    【解决方案1】:

    您确定在同一个窗口中运行代码吗?如果您将表格放在另一个窗口中,它不会正确地放下它。

    我一直认为最好的做法是在显式创建表之前运行检查它是否存在的代码(而不是 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 into 技术只是节省时间。
    • 是的,虽然它可能有点痛苦(它让你来堆栈溢出来询问它)。从长远来看,养成使用上述代码的习惯实际上可以节省更多时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2022-01-23
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多