首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多临时数据库环境中测试临时表的存在吗?

在多临时数据库环境中测试临时表的存在吗?
EN

Stack Overflow用户
提问于 2008-10-10 00:32:12
回答 2查看 5.7K关注 0票数 0

有没有办法在不引用创建临时表的临时数据库的情况下,确定是否在会话中创建了特定的临时表?用户在登录时被分配到一个特定的tempdb,所以我不知道他们将使用哪个tempdb。

我不需要指定tempdb来从临时表中选择数据,所以我肯定可以看到表是否存在?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-10 08:00:29

在我看来,你不应该在这里使用临时表...这些表看起来更像是常规表(可能带有用户标识符)。这里的场景是什么?

注意,以这种方式使用临时表可能会对优化器/查询缓存造成严重破坏-它将不得不进行大量的重新编译,因为#FOO的含义会发生很大的变化-每次调用都会发生很大的变化。

票数 0
EN

Stack Overflow用户

发布于 2008-12-10 14:13:20

您可以使用object_id检查是否存在临时对象:

代码语言:javascript
复制
SELECT object_id('#tmpTable')

如果需要,您可以指定要使用的tempdb,但不必这样做:

代码语言:javascript
复制
SELECT object_id('tempdb..#tmpTable')

值得注意的是,这也适用于全局临时表:

代码语言:javascript
复制
SELECT object_id('##tmpTable')

为了使脚本可重新运行而不必在最后执行DROP table,我总是在创建临时表之前执行检查和drop。我经常在开发SQL代码时保留创建的表。

代码语言:javascript
复制
IF NULLIF(object_id('#tmpTable'), 0) IS NOT NULL DROP TABLE #tmpTable
CREATE TABLE #tmpTable (
    id int,
    col1 varchar(100)
)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/189708

复制
相关文章

相似问题

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