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

 

 

 

posted @ 2014-07-06 11:11  忧忧夏天  阅读(808)  评论(0编辑  收藏  举报