IF EXISTS不会删除临时表

rvp*_*phx 0 sql-server temp-tables

这可能是一个多部分问题:

当我发布声明时

IF OBJECT_ID('temp..#tablename) IS NOT NULL --drop the table here
Run Code Online (Sandbox Code Playgroud)

它不会删除临时表.当我去看临时数据库时,这个名字是完全不同的......

#tablename___________________________________________00000001069F
Run Code Online (Sandbox Code Playgroud)

显然,drop语句不适用于此.如何使用上述语句确保临时表被删除.

另外,如果我在create temp table语句之前使用"USE dbName",临时表是否仍然在tempdb或dbName数据库中创建?默认值是tempDb吗?

谢谢,RV.

The*_*war 7

使用应该使用

OBJECT_ID('tempDB..#tablename')
Run Code Online (Sandbox Code Playgroud)

OBJECT_ID('temp..#tablename')
Run Code Online (Sandbox Code Playgroud)

临时表是否仍在tempdb或dbName数据库中创建?默认值是tempDb吗?

临时表始终在TEMPDB中创建.

你看到名字的原因_____00000001069F是由于Temp表是特定于会话的,而SQL负责为它们分配名称,因此名称不会冲突,即使它们在具有相同名称的并行会话中使用

在DBA.SE上查看这个答案以获取更多信息,特别是查看Temp Tables部分:

SQL Server中临时表和表变量之间有什么区别?