SQL Server 判断数据库中是否存在表

时间:2023-03-10 01:54:25
SQL Server 判断数据库中是否存在表

使用场景

  • 可以反复的执行相同脚本

方式1:查询sysobjects表

if EXISTS (SELECT * from sysobjects WHERE name='test_table')
DROP TABLE test_table
create table test_table(
id varchar(20),
name nvarchar(20)
)

方式2:使用object_id函数

  • 语法
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [ ,'object_type' ] )
  • object_type
AF = 聚合函数 (CLR)

C = CHECK 约束

D = DEFAULT(约束或独立)

F = FOREIGN KEY 约束

FN = SQL 标量函数

FS = 程序集 (CLR) 标量函数

FT = 程序集 (CLR) 表-值函数

IF = SQL 内联表值函数

IT = 内部表

P = SQL 存储过程

PC =程序集 (CLR) 存储过程

PG = 计划指南

PK = PRIMARY KEY 约束

R = 规则(旧式,独立)

RF = 复制过滤程序

S = 系统基表

SN = 同义词

SO = 序列对象

U = 表(用户定义)

V = 视图

EC = 边缘约束

适用于:SQL Server 2012 (11.x) 及更高版本。

SQ = 服务队列

TA = 程序集 (CLR) DML 触发器

TF = SQL 表值函数

TR = SQL DML 触发器

TT = 表类型

UQ = UNIQUE 约束

X = 扩展存储过程

实例

IF object_id('test_table','u') is  not null
DROP TABLE test_table
create table test_table(
id varchar(20),
name nvarchar(20)
)