Я пытаюсь понять странное поведение 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» между парами линий делает весь сценарий успешным.
Почему это не работает только для временных таблиц?