而不是像这样检查临时表的存在:
IF OBJECT_ID('tempdb..#table') IS NOT NULL
BEGIN;
DROP TABLE #table;
END;
我正在使用新的DROP IF EXISTS
技术:
DROP TABLE IF EXISTS tempdb..#table;
它工作正常,但如果表不存在,我收到以下消息。
忽略数据库名称'tempdb',引用tempdb中的对象。
有谁知道这条消息的原因和含义是什么?
答案 0 :(得分:4)
在谈论tempdb
时,无需指定#table
- tempdb
中的临时表已经。我同意该消息令人困惑,但它实际上并不是错误 - 它只是一条消息(PRINT
)告诉您您做错了什么。实际上,无论是否存在,您都会收到的消息;例如:
-- 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
输出消息两次:
Database name 'tempdb' ignored, referencing object in tempdb.
Database name 'tempdb' ignored, referencing object in tempdb.
所以:只需使用:
DROP TABLE IF EXISTS #table;
这是它要你做的。