在SQL Server中确定临时表是否存在的最佳方法是什么?

22

当我写一个计划重新运行的 T-SQL 脚本时,通常会使用临时表来存储临时数据。由于临时表是即席创建的,所以我希望在创建之前,只有当存在该表时才能删除它。

我将发布我使用的方法,但我想看看是否有更好的方法。

3个回答

29
IF Object_Id('TempDB..#TempTable') IS NOT NULL
BEGIN
    DROP TABLE #TempTable
END

15

OBJECT_ID函数返回给定对象名称和类型的内部对象ID。'tempdb..#t1'是指tempdb数据库中的表#t1。'U'代表用户定义表。

IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL
  DROP TABLE #t1

CREATE TABLE #t1
(
  id INT IDENTITY(1,1),
  msg VARCHAR(255)
)

-1
SELECT name
FROM sysobjects
WHERE type = 'U' AND name = 'TempTable'

1
Keith,看起来这个查询会找到普通用户表,但不会找到临时表。 - Nathan Bedford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接