这可能是一个多部分问题:
当我发出声明时
IF OBJECT_ID('temp..#tablename) IS NOT NULL --drop the table here
它不会删除临时表。当我去看临时数据库时,这个名字是完全不同的......
#tablename___________________________________________00000001069F
显然,drop语句不适用于此。如何使用上述语句确保临时表被删除。
另外,如果我在create temp table语句之前使用“USE dbName”,是否仍然在tempdb或dbName数据库中创建临时表?默认值是tempDb吗?
谢谢, RV
答案 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?