我试图了解有关删除临时表的一些奇怪的SQL Server行为。以下代码在第3行导致错误,提示“数据库中已经存在一个名为'#Table1'的对象。”
为什么表格在删除后仍然存在?
create table #Table1 (Col int)
drop table #Table1
create table #Table1 (Col int)
drop table #Table1
我尝试了其他一些代码示例作为健全性检查。
create table #Table1 (Col int)
drop table #Table1
select * from #Table1
按预期,从删除的临时表中选择失败。
create table Table1 (Col int)
drop table Table1
create table Table1 (Col int)
drop table Table1
按预期方式,可以成功删除和重新创建非临时表。
begin tran
create table #Table1 (Col int)
drop table #Table1
commit
begin tran
create table #Table1 (Col int)
drop table #Table1
commit
包装交易中的线对没有区别;它仍然失败。
create table #Table1 (Col int)
drop table #Table1
go
create table #Table1 (Col int)
drop table #Table1
在两行之间插入一个“ GO”使整个脚本成功。
为什么这只会对临时表失败?