sql server判断表存在

时间:2022-03-23 04:34:58

在创建表、更改表结构、删除表或对表进行什么操作之前,一个比较严谨的做法是先判断该表是否已经存在。

在SQL Server中判断一个表是否存在,有两个方法,下面以diso表为例。

方法1

if exists(select top 1 1 from sysObjects where id = object_id(Ndiso) and xtype = U)
    print 表diso存在
else 
    print 表diso不存在

原理是查询【sysObjects】这张系统表,该表保存了所有对象信息,既然是所有对象,自然包括表的信息,其中xtype为【U表示为用户表。

方法2

if object_id(Ndiso, NU) is not null
    print 表diso存在
else 
    print 表diso不存在

临时表

前面都是判断普通表,如果是判断临时表的话,则需要在临时表前加上【tempdb..】前缀,指明这是一个临时表。

if exists(select top 1 1 from sysObjects where id = object_id(Ntempdb..#diso) and xtype = U)
    print 表#diso存在
else 
    print 表#diso不存在
if object_id(Ntempdb..#diso, NU) is not null
    print 表diso存在
else 
    print 表diso不存在

临时表实际上还是一个表,只不过查询的时候和实体表还是有点区别。

 

"去走自己的路,赢要赢得理所当然,输也要输得清清楚楚。"