开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 14038|回复: 0

SQL Server OBJECT_ID用法-判断对象是否存在

[复制链接]

0

精华

10

贡献

19

赞扬

帖子
33
软币
151
在线时间
11 小时
注册时间
2016-9-8

武林秘籍

发表于 2016-9-11 20:19:38 | 显示全部楼层 |阅读模式
OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]     object_name' [ ,'object_type' ] )


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

object_type 对象类型:
AF = 聚合函数 (CLR)
C = CHECK 约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束
PK = PRIMARY KEY 约束
P = SQL 存储过程
PC = 程序集 (CLR) 存储过程
FN = SQL 标量函数
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
R = 规则(旧式,独立)
RF = 复制筛选过程
SN = 同义词
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TR = SQL DML 触发器
IF = SQL 内联表值函数
TF = SQL 表值函数
U = 表(用户定义类型)
UQ = UNIQUE 约束
V = 视图
X = 扩展存储过程
IT = 内部表


1、判断临时表是否存在
if object_id('tempdb..#q','U') is not null
drop table #q
go

2、判断表是否存在
if object_id('AdventureWorks.dbo.q','U') is not null
drop table dbo.q
go

IF EXISTS
(SELECT * FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'T1') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE dbo.T1;


3、判断存储过程是否存在
IF OBJECT_ID ( 'AdventureWorks.dbo.usp_GetErrorInfo', 'P' ) IS NOT NULL
    DROP PROCEDURE dbo.usp_GetErrorInfo;
GO




评分

参与人数 1赞扬 +1 收起 理由
wangzisa + 1 赞一个

查看全部评分

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-4-25 19:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表