版权声明:转载请注明出处谢谢~~~~~~~ https://blog.csdn.net/ZUFE_ZXh/article/details/86673964
一、操作环境
- 数据库版本:sql server 2012
- 测试数据库:Northwind,安装方法请参考这篇文章
二、语法介绍
OBJECTPROPERTY(id, property)
#id表示当前数据库中对象ID的表达式
#property是一个表达式,提供id指定的对象的返回信息。
其中property可以是以下的值
属性名称 | 对象类型 | 说明 | 返回值 | 属性名称 | 对象类型 | 说明 | 返回值 | |
---|---|---|---|---|---|---|---|---|
CnstlsClustKey | 约束 | 具有聚集索引的 PRIMARY KEY 约束 | 1=True 0=False | CnstlsColumn | 约束 | 单个列上的 CHECK、DEFAULT 或 FOREIGN KEY 约束 | 1=True 0=False | |
ExeclsAfterTrigger | 触发器 | AFTER 触发器 | 1=True 0=False | ExeclsDeleteTrigger | 触发器 | DELETE触发器 | 1=True 0=False | |
IsPrimaryKey | 任何架构范围内的对象 | PRIMARY KEY 约束 | 1=True 0=False NULL=非函数,或对象ID无效 | IsTable | 表 | 表 | 1=True 0=False | |
… | … | … | … | … | … | … | … |
①更多属性值及完整信息请查看官方文档
②除非另外注明,否则出现以下情况时将返回 NULL:
Ⅰ: property 不是有效的属性名称;id 不是有效的对象 ID;
Ⅱ: id 不是指定属性支持的对象类型;
Ⅲ: 调用方无权查看对象的元数据。
由上表可知,可以使用“IsTable”来验证对象是不是表名,这里以“Orders”为例
IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') = 1
PRINT 'Orders表存在当前数据库'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') = 0
PRINT 'Orders表不存在当前数据库' ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190128114021172.png)
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Orders'),'ISTABLE') IS NULL
PRINT '属性名称无效或无访问权限'
#属性说明
OBJECT_ID():表示系统分配给对应表的唯一ID。
N'Orders':N表示Unicode类型,这样可以支持不同语种的对象名;'Orders'处填写的要查询的对象名。
执行,查看结果