t-sql判断数据库对象是否存在
1 系统表sys.sysobjects
在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都对应一行,详细介绍参考MSDN
2 OBJECTPROPERTY
返回当前数据库中架构范围内的对象的有关信息,MSDN介绍
3 判断数据库、表、视图、存储过程、索引、列是否存在语句
SELECT * FROM sys.sysobjects GO /* xtype 的表示参数类型,通常包括如下这些 C = CHECK 约束 D = 默认值或DEFAULT 约束 F = FOREIGN KEY 约束 L = 日志 FN = 标量函数 IF = 内嵌表函数 P = 存储过程 PK = PRIMARY KEY 约束(类型是 K) RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR = 触发器 U = 用户表 UQ = UNIQUE 约束(类型是 K) V = 视图 X = 扩展存储过程 */--数据库 IF exists( SELECT 1 from sys. sysdatabases where name = dbname) begin drop database dbname end --表 IF exists( SELECT 1 from sys. sysobjects where id = object_id (N'tbname') AND OBJECTPROPERTY (id, N'IsUserTable') = 1) BEGIN drop TABLE tbname END --存储过程 IF exists( SELECT 1 from sys. sysobjects where id = object_id(N'System_GetTableCreateSql' ) AND OBJECTPROPERTY (id, N'IsProcedure') = 1) BEGIN drop PROC System_GetTableCreateSql END --函数 IF exists (SELECT 1 from sys.sysobjects where id = object_id('procname' )) BEGIN drop Function procname END --视图 IF exists( SELECT 1 from sys. views where object_id = object_id(N'viewname' )) BEGIN drop VIEW viewname END --列 IF exists( SELECT 1 from syscolumns where id =object_id( 'tbname') and name='columnName' ) BEGIN alter table tbname drop column columnName END --索引 IF exists( SELECT 1 from sys. sysindexes where id= object_id('tbname' ) and name='indexName' ) BEGIN drop INDEX indexName ON tbname END