您的位置:首页 > 数据库

SQL Server 2008 中判断对象是否存在

2013-11-01 14:03 232 查看
  1、判断数据库是否存在

  1 if exists
(select * from sys.databases where name
= '数据库名')

  2   drop database [数据库名]

  2、判断表是否存在

  1 if exists
(select * from sysobjects where id
= object_id(N'[表名]')
and OBJECTPROPERTY(id, N'IsUserTable')=
1)

  2   drop table [表名]

  3、判断存储过程是否存在

  1 if exists
(select * from sysobjects where id
= object_id(N'[存储过程名]')
and OBJECTPROPERTY(id, N'IsProcedure')=
1)

  2   drop procedure [存储过程名]

  4、判断临时表是否存在

  1 if object_id('tempdb..#临时表名')
is not null

  2   drop table #临时表名
/*当指定临时表名时,除非当前数据库为 tempdb,否则必须在该临时表名之前加上数据库名称。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。*/

  5、判断视图是否存在

  1 -- SQL Server 2000

  2 IF EXISTS
(SELECT * FROM sysviews WHERE object_id
= '[dbo].[视图名]'

  1 --SQL Server 2008

  2 IF EXISTS
(SELECT * FROM sys.views WHERE object_id
= '[dbo].[视图名]'

  6、判断函数是否存在

  1 if exists
(select * from dbo.sysobjects where id
= object_id(N'[dbo].[函数名]')
and xtype in (N'FN', N'IF', N'TF'))

  2   drop function [dbo].[函数名]

  7、获取用户创建的对象信息

  1 SELECT [name],[id],crdate FROM sysobjects where xtype='U'

  2 /*

对象类型:

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 = 同义词

SQ = 服务队列

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

TF = SQL 表值函数

TR = SQL DML 触发器

TT = 表类型

U = 表(用户定义类型)

UQ = UNIQUE 约束

V = 视图

X = 扩展存储过程

*/

  8、判断列是否存在

  1 if exists(select * from syscolumns where id=object_id('表名')
and name='列名')

  2   alter table
表名 drop column
列名

  9、判断列是否自增列

  1 if columnproperty(object_id('table'),'col','IsIdentity')=1

  2   print '自增列'

  3 else

  4   print '不是自增列'

  5   SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('表名')
AND is_identity=1

  10、判断表中是否存在索引

  1 if exists(select * from sysindexes where id=object_id('表名')
and name='索引名')

  2   print  '存在'

  3 else

  4   print  '不存在

  11、查看数据库中对象

  1 SELECT * FROM sys.sysobjects WHERE name='对象名'
作者:不详;来源:网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: