在T-SQL编程中,有时候需要创建数据库和数据库对象,那么在创建前对对象的存在性进行检测就比较重要了。
在master数据库中提供了sysdatabases视图,在自定义数据库中提供了sysobjects视图,我们所创建的数据库及其对象分别存放在这两个视图中。
典型用法:
创建数据库之前检测是否存在:
if not exists(select * from sys.databases where name=‘要创建的数据库名')
create database ......
else
print '存在'
创建数据库对象前检测是否存在:
if not exists(select * from sys.objects where name='userinfo' and type='u')
create table......
else
print '存在'
附:各种数据库对象在sysobjects对应的类型:
C = CHECK 约束
D = 默认设置或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内联表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选器存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程