在选择和插入SQL Server时验证表是否存在

时间:2011-02-18 02:49:03

标签: sql-server-2008

您好我有一个像

这样的动态查询
SET  @template = 'SELECT x AS X,... INTO temporalTable FROM' + @table_name 

然后我执行它

EXEC (@template)
  • 如何验证temporalTable 已经存在,如果是这样,放弃它?

3 个答案:

答案 0 :(得分:2)

只需使用OBJECT_ID

即可
IF OBJECT_ID('temporalTable') IS NOT NULL
   DROP TABLE temporalTable

无需查询任何表格或进行任何聚合。

答案 1 :(得分:1)

使用信息架构或sp_help功能。

我更喜欢information schema,因为它是SQL ANSI,您可以将代码移植到其他数据库:

select count(1)
  from information_schema.tables 
 where table_name = 'temporalTable';

sys.tables是一个特定于SQLServer的选项,类似于您也可以探索的信息架构。

答案 2 :(得分:1)

IF EXISTS (SELECT 1 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_TYPE='BASE TABLE' 
    AND TABLE_NAME='tablename') 
        SELECT 'tablename exists.' 
ELSE 
        SELECT 'tablename does not exist.'