Временная таблица отбрасывания SQL Server имеет странное поведение - PullRequest
1 голос
/ 05 июля 2019

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

Почему это не работает только для временных таблиц?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...