【发布时间】:2017-02-14 15:28:47
【问题描述】:
我有以下 T-SQL 代码包:
begin tran
select top 100 *
into #t
from tableA
rollback tran
begin tran
if OBJECT_ID('tempdb..#t')is not null
drop table #t
select top 100 *
into #t
from tableA
rollback tran
当我尝试执行此代码时,我收到以下错误:
数据库中已经有一个名为“#t”的对象。
似乎在第二个事务开始时检查未找到绑定到表变量 #t 的 objectId。
我期待的是#t 将被删除然后重新创建。为什么相同的变量没有被删除,然后我在第二个事务中返回一个错误?
谢谢
【问题讨论】:
-
这是一个编译时问题。您不能在同一个批次中多次创建同一个命名的临时表,无论它们是在互斥的代码路径中还是存在中间删除dba.stackexchange.com/a/153626/3690
标签: tsql sql-server-2012 transactions