SQL中判断对象是否存在
1、数据库是否存在if exists (select * from sys.databases where name = ’数据库名’) print '存在' -- drop database [数据库名] --如果存在则删除
2、表是否存在
if exists (select * from sysobjects where>print '存在' --drop table [表名] --如果存在则删除
3、存储过程是否存在
if exists (select * from sysobjects where>print '存在' --drop procedure [存储过程名] --如果存在则删除
4、临时表是否存在
if object_id(’tempdb..#临时表名’) is not null print '存在'--drop table #临时表名 --如果存在则删除
If Object_Id('Tempdb.dbo.#临时表') Is Not Null
5、视图是否存在
if exists (select * from dbo.sysobjects where>
SQL Server 2000
--IF EXISTS (SELECT * FROM sysviews WHERE object_id = '.[视图名]'
SQL Server 2005
--IF EXISTS (SELECT * FROM sys.views WHERE object_id = '.[视图名]'
SQL Server 2008
if exists (select * from sysobjects where>
print '存在'
--或
if exists (select * from sysobjects where>
print '存在'
--drop view dbo.dc_adplan
6、函数是否存在
if exists (select * from dbo.sysobjects where>-- drop function .[函数名]
7、列是否存在
--if col_length('表名', '列名') is null
if exists(select * from syscolumns where>
-- >
8、判断索引是否存在
IFEXISTS (SELECT * FROM sys.check_constraints WHERE object_id = OBJECT_ID(N'.') AND parent_object_id = OBJECT_ID(N'.[表名]'))
ALTER TABLE .[表名] DROP CONSTRAINT
9、判断列是否自自增列
if columnproperty(object_id('table'),'col’,’IsIdentity’)=1 print '自增列'
else
print '不是自增列'
10、查看数据库中对象
select * from sys.sysobjects where name='对象名'
11、获取用户创建的对象信息
SELECT ,,crdate FROM sysobjects where xtype='U'
补充:
If object_id(N'对象名',N'对象类型') is not null
对象类型通常包括如下这些:
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=同义词
SQL=服务队列
TA=程序集(CLR)DML
TF=SQL表值函数
TR=SQL DML触发器
U=表(用户定义类型)
V=视图
X=扩展存储过程
页:
[1]