首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >忽略数据库名“tempdb”,它引用了tempdb中的对象

忽略数据库名“tempdb”,它引用了tempdb中的对象
EN

Stack Overflow用户
提问于 2018-01-12 09:17:50
回答 1查看 13.7K关注 0票数 10

而不是像这样检查临时表的存在:

代码语言:javascript
运行
复制
IF OBJECT_ID('tempdb..#table') IS NOT NULL
BEGIN;
    DROP TABLE #table;
END;

我正在使用新的DROP IF EXISTS技术:

代码语言:javascript
运行
复制
DROP TABLE IF EXISTS tempdb..#table;

它工作得很好,但是如果表不存在,我将得到以下消息。

忽略数据库名“tempdb”,它引用了tempdb中的对象。

有人知道这条信息是什么意思吗?

EN

Stack Overflow用户

回答已采纳

发布于 2018-01-12 09:23:01

在谈论tempdb时不需要指定#table --临时表已经在tempdb中了。我同意这条信息是令人困惑的,但它实际上并不是一个错误--它只是一条消息(PRINT),告诉您您做错了什么。实际上,无论消息是否存在,都会得到该消息;例如:

代码语言:javascript
运行
复制
-- drop when doesn't exist
drop table if exists tempdb..#foo

go

-- drop when does exist
create table #foo (id int)
drop table if exists tempdb..#foo

输出消息两次

代码语言:javascript
运行
复制
Database name 'tempdb' ignored, referencing object in tempdb.
Database name 'tempdb' ignored, referencing object in tempdb.

所以:只需使用:

代码语言:javascript
运行
复制
DROP TABLE IF EXISTS #table;

这就是它想让你做的。

票数 15
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48222976

复制
相关文章

相似问题

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