При написании сценария T-SQL, который я планирую перезапустить, часто я использую временные таблицы для хранения временных данных. Поскольку временная таблица создается на лету, я хотел бы иметь возможность удалить эту таблицу, только если она существует (до того, как я ее создаю).
Я опубликую метод, который я использую, но я хотел бы увидеть, есть ли лучший способ.
20 sql-server
Nathan Bedford
5.08.2008 18:18:39
3 ОТВЕТА
РЕШЕНИЕ
IF Object_Id('TempDB..#TempTable') IS NOT NULL
BEGIN
DROP TABLE #TempTable
END
27
GateKiller
30.01.2017 17:05:01
Функция OBJECT_ID возвращает внутренний идентификатор объекта для данного имени и типа объекта. «tempdb .. # t1» ссылается на таблицу # t1 в базе данных tempdb. «U» для пользовательской таблицы.
IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL
DROP TABLE #t1
CREATE TABLE #t1
(
id INT IDENTITY(1,1),
msg VARCHAR(255)
)
14
Nathan Bedford
27.08.2014 10:46:53
SELECT name
FROM sysobjects
WHERE type = 'U' AND name = 'TempTable'
0
Keith Maurino
1.12.2016 19:49:14
Кейт, похоже, что этот запрос найдет обычные пользовательские таблицы, но не временные таблицы.
Nathan Bedford
13.01.2009 16:06:02