【问题标题】:What's the best way to determine if a temporary table exists in SQL Server?确定 SQL Server 中是否存在临时表的最佳方法是什么?
【发布时间】:2010-09-05 09:11:58
【问题描述】:

在编写我计划重新运行的 T-SQL 脚本时,我经常使用临时表来存储临时数据。由于临时表是动态创建的,因此我希望只有在该表存在时才能删除该表(在我创建它之前)。

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:
    IF Object_Id('TempDB..#TempTable') IS NOT NULL
    BEGIN
        DROP TABLE #TempTable
    END
    

    【讨论】:

      【解决方案2】:

      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)
      )
      

      【讨论】:

        【解决方案3】:
        SELECT name
        FROM sysobjects
        WHERE type = 'U' AND name = 'TempTable'
        

        【讨论】:

        • Keith,看起来该查询会找到普通用户表,但不会找到临时表。
        猜你喜欢
        • 1970-01-01
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-29
        • 2013-06-03
        • 1970-01-01
        相关资源
        最近更新 更多