IF EXISTS不会删除临时表

时间:2017-04-13 16:59:45

标签: sql-server temp-tables

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

当我发出声明时

IF OBJECT_ID('temp..#tablename) IS NOT NULL --drop the table here

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

#tablename___________________________________________00000001069F

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

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

谢谢, RV

1 个答案:

答案 0 :(得分:7)

使用应该使用

OBJECT_ID('tempDB..#tablename')

OBJECT_ID('temp..#tablename')
  

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

YES

临时表始终在TEMPDB中创建..

您看到_____00000001069F这样的名称的原因是由于Temp表是特定于会话的,并且SQL负责为它们分配名称,因此名称不会发生冲突,即使它们是冲突的用于具有相同名称的并行会话

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

What's the difference between a temp table and table variable in SQL Server?