首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >检查和删除临时表的正确方法是什么?

检查和删除临时表的正确方法是什么?
EN

Database Administration用户
提问于 2023-01-31 15:27:12
回答 1查看 1.2K关注 0票数 -2

方法1:

代码语言:javascript
代码运行次数:0
运行
复制
IF OBJECT_ID('tempdb..#MyTempTbl') IS NOT NULL
    DROP TABLE #MyTempTbl;

办法2:

代码语言:javascript
代码运行次数:0
运行
复制
IF EXISTS (SELECT * FROM [tempdb].[sys].[objects]
    WHERE [name] = N'#MyTempTbl')
    DROP TABLE [#MyTempTbl];

检查和删除临时表的正确方法是什么?

上下文是由代理作业调用的存储过程。

我已经尝试过查询诱饵.系统.对象,并注意到全局临时表的名称与本地临时表相同,其中本地临时表的名称在末尾带有下划线,如这个MyTempTbl______。因此,我想知道是否有一种标准的方法来检查临时表是否存在,如果是的话,我正在寻找适用于本地和全局临时表的语法。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2023-02-01 06:17:11

方法1具有实际正确工作的优点。

方法2不适用于本地临时表,因为[tempdb].[sys].[objects]中的条目具有内部系统生成的名称。它确实适用于全局临时表。

您也可以使用如果存在下降,但是在存储过程(和其他模块)中,它是不必要的,甚至是潜在有害

在存储过程中,临时表将自动删除在过程的末尾。

存储过程中的临时表的...an显式删除是不必要的,因此不建议.

注意,是否显式地在过程末尾删除临时表(来自缓存透视图)并不重要。无论哪种方式,临时表仍然可以缓存。

通常,对模块中的本地临时表使用像#MyTemp这样的通用名称并不是一个好主意。使用特定于模块的内容来防止临时表名会导致计划缓存膨胀吗?中描述的问题

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/322841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档