OBJECTPROPERTY用法.docx
《OBJECTPROPERTY用法.docx》由会员分享,可在线阅读,更多相关《OBJECTPROPERTY用法.docx(13页珍藏版)》请在冰豆网上搜索。
OBJECTPROPERTY用法
OBJECTPROPERTY
返回当前数据库中对象的有关信息。
语法
OBJECTPROPERTY(id,property)
参数
id
一个表达式,包含当前数据库中某个对象的ID。
id的数据类型是int。
Property
一个表达式,包含针对由id指定的对象将要返回的信息。
Property可以是下面这些值中的一个。
说明 除非加以注释,否则,如果property是无效的属性名,则返回NULL。
属性名称
对象类型
描述和返回的值
CnstIsClustKey
约束
带有聚集索引的主键。
1=True
0=False
CnstIsColumn
约束
COLUMN约束。
1=True
0=False
CnstIsDeleteCascade
约束
带有ONDELETECASCADE选项的外键约束。
CnstIsDisabled
约束
禁用的约束。
1=True
0=False
CnstIsNonclustKey
约束
带有非聚集索引的主键。
1=True
0=False
CnstIsNotTrusted
约束
启用约束时未检查现有行,所以可能不是所有行都受约束的控制。
1=True
0=False
CnstIsNotRepl
约束
使用NOTFORREPLICATION关键字定义约束。
CnstIsUpdateCascade
约束
带有ONUPDATECASCADE选项的外键约束。
ExecIsAfterTrigger
触发器
AFTER触发器。
ExecIsAnsiNullsOn
过程、触发器、视图
创建时的ANSI_NULLS设置。
1=True
0=False
ExecIsDeleteTrigger
触发器
DELETE触发器。
1=True
0=False
ExecIsFirstDeleteTrigger
触发器
对表执行DELETE时触发的第一个触发器。
ExecIsFirstInsertTrigger
触发器
对表执行INSERT时触发的第一个触发器。
ExecIsFirstUpdateTrigger
触发器
对表执行UPDATE时触发的第一个触发器。
ExecIsInsertTrigger
触发器
INSERT触发器。
1=True
0=False
ExecIsInsteadOfTrigger
触发器
INSTEADOF触发器。
ExecIsLastDeleteTrigger
触发器
对表执行DELETE时触发的最后一个触发器。
ExecIsLastInsertTrigger
触发器
对表执行INSERT时触发的最后一个触发器。
ExecIsLastUpdateTrigger
触发器
对表执行UPDATE时触发的最后一个触发器。
ExecIsQuotedIdentOn
过程、触发器、视图
创建时的QUOTED_IDENTIFIER设置。
1=True
0=False
ExecIsStartup
过程
启动过程。
1=True
0=False
ExecIsTriggerDisabled
触发器
禁用的触发器。
1=True
0=False
ExecIsUpdateTrigger
触发器
UPDATE触发器。
1=True
0=False
HasAfterTrigger
表,视图
表或视图具有AFTER触发器。
1=True
0=False
HasInsertTrigger
表,视图
表或视图具有INSERT触发器。
1=True
0=False
HasInsteadOfTrigger
表、视图
表或视图具有INSTEADOF触发器。
1=True
0=False
HasUpdateTrigger
表、视图
表或视图具有UPDATE触发器。
1=True
0=False
IsAnsiNullsOn
函数、过程、表、触发器、视图
指定表的ANSINULLS选项设置为ON,表示所有与空值的比较都取值为UNKNOWN。
只要表存在,该设置就应用于表定义中的所有表达式,包括计算列和约束。
1=ON
0=OFF
IsCheckCnst
任何
CHECK约束。
1=True
0=False
IsConstraint
任何
约束。
1=True
0=False
IsDefault
任何
绑定的默认值。
1=True
0=False
IsDefaultCnst
任何
DEFAULT约束。
1=True
0=False
IsDeterministic
函数、视图
函数的确定性属性。
只适用于标量值及表值函数。
1=可确定的
0=不可确定的
NULL=不是标量值或表值函数,或者是无效的对象ID。
IsExecuted
任何
指定执行该对象的方式(视图、过程或触发器)。
1=True
0=False
IsExtendedProc
任何
扩展过程。
1=True
0=False
IsForeignKey
任何
FOREIGNKEY约束。
1=True
0=False
IsIndexed
表、视图
带有索引的表或视图。
IsIndexable
表、视图
可以创建索引的表或视图。
IsInlineFunction
函数
内嵌函数。
1=内嵌函数
0=非内嵌函数
NULL=不是函数,或者是无效的对象ID。
IsMSShipped
任何
在安装Microsoft®SQLServer™2000的过程中创建的对象。
1=True
0=False
IsPrimaryKey
任何
PRIMARYKEY约束。
1=True
0=False
IsProcedure
任何
过程。
1=True
0=False
IsQuotedIdentOn
函数、过程、表、触发器、视图
指定表的被引用标识符设置为ON,表示在表定义所涉及的所有表达式中,双引号标记分隔标识符。
1=ON
0=OFF
IsReplProc
任何
复制过程。
1=True
0=False
IsRule
任何
绑定的规则。
1=True
0=False
IsScalarFunction
函数
标量值函数。
1=标量值
0=表值
NULL=不是函数,或者是无效的对象ID。
IsSchemaBound
函数,视图
使用SCHEMABINDING创建的架构绑定函数或视图。
1=架构绑定
0=非架构绑定
NULL=不是函数或视图,或者是无效的对象ID。
IsSystemTable
表
系统表。
1=True
0=False
IsTable
表
表。
1=True
0=False
IsTableFunction
函数
表值函数。
1=表值
0=标量值
NULL=不是函数,或者是无效的对象ID。
IsTrigger
任何
触发器。
1=True
0=False
IsUniqueCnst
任何
UNIQUE约束。
1=True
0=False
IsUserTable
表
用户定义的表。
1=True
0=False
IsView
视图
视图。
1=True
0=False
OwnerId
任何
对象的所有者。
Nonnull=对象所有者的数据库用户ID。
NULL=无效的输入。
TableDeleteTrigger
表
表有DELETE触发器。
>1=给定类型的第一个触发器的ID。
TableDeleteTriggerCount
表
表具有指定数目的DELETE触发器。
>1=给定类型的第一个触发器的ID。
NULL=无效的输入。
TableFullTextBackgroundUpdateIndexOn
表
表已启用全文后台更新索引。
1=True
0=False
TableFulltextCatalogId
表
表的全文索引数据所驻留的全文目录的ID。
Nonzero=全文目录ID,它与标识全文索引表中行的唯一索引相关。
0=表不是全文索引的。
TableFullTextChangeTrackingOn
表
表已启用全文更改跟踪。
1=True
0=False
TableFulltextKeyColumn
表
与某个单列唯一索引相关联的列ID,这个单列唯一索引参与全文索引定义。
0=表不是全文索引的。
TableFullTextPopulateStatus
表
0=不填充
1=完全填充
2=增量填充
TableHasActiveFulltextIndex
表
表具有一个活动的全文索引。
1=True
0=False
TableHasCheckCnst
表
表具有CHECK约束。
1=True
0=False
TableHasClustIndex
表
表具有聚集索引。
1=True
0=False
TableHasDefaultCnst
表
表具有DEFAULT约束。
1=True
0=False
TableHasDeleteTrigger
表
表具有DELETE触发器。
1=True
0=False
TableHasForeignKey
表
表具有FOREIGNKEY约束。
1=True
0=False
TableHasForeignRef
表
表由FOREIGNKEY约束引用。
1=True
0=False
TableHasIdentity
表
表具有标识列。
1=True
0=False
TableHasIndex
表
表具有一个任何类型的索引。
1=True
0=False
TableHasInsertTrigger
表
对象具有Insert触发器。
1=True
0=False
NULL=无效的输入。
TableHasNonclustIndex
表
表具有非聚集索引。
1=True
0=False
TableHasPrimaryKey
表
表具有主键。
1=True
0=False
TableHasRowGuidCol
表
对于uniqueidentifier列,表具有ROWGUIDCOL。
1=True
0=False
TableHasTextImage
表
表具有text列。
1=True
0=False
TableHasTimestamp
表
表具有timestamp列。
1=True
0=False
TableHasUniqueCnst
表
表具有UNIQUE约束。
1=True
0=False
TableHasUpdateTrigger
表
对象具有Update触发器。
1=True
0=False
TableInsertTrigger
表
表具有INSERT触发器。
>1=给定类型的第一个触发器的ID。
TableInsertTriggerCount
表
表具有指定数目的INSERT触发器。
>1=给定类型的第一个触发器的ID。
TableIsFake
表
表不是真实的。
根据需要SQLServer对其进行内部具体化。
1=True
0=False
TableIsPinned
表
驻留表以将其保留在数据高速缓存中。
1=True
0=False
TableTextInRowLimit
表
textinrow所允许的最大字节数,如果没有设置textinrow选项则为0。
TableUpdateTrigger
表
表具有UPDATE触发器。
>1=给定类型的第一个触发器的ID。
TableUpdateTriggerCount
表
表具有指定数目的UPDATE触发器。
>1=给定类型的第一个触发器的ID。
返回类型
int
注释
OBJECTPROPERTY(view_id,'IsIndexable')可能会耗费大量的计算机资源,这是因为对IsIndexable属性的评估需要分析视图定义、进行规范化以及部分优化。
当至少添加了表的一列以用于索引时,OBJECTPROPERTY(table_id,'TableHasActiveFulltextIndex')将返回"1"(True)。
只要添加了用于索引的第一列后,全文索引即可用于填充。
当除去索引中的最后一列时,索引变成非活动。
如果某些索引键需求条件得不到满足,那么实际创建索引仍然可能会失败。
详细信息请参见CREATEINDEX。
示例
A.查明authors是否为一个表
下面的示例测试authors是否为一个表。
IFOBJECTPROPERTY(object_id('authors'),'ISTABLE')=1
print'Authorsisatable'
ELSEIFOBJECTPROPERTY(object_id('authors'),'ISTABLE')=0
print'Authorsisnotatable'
ELSEIFOBJECTPROPERTY(object_id('authors'),'ISTABLE')ISNULL
print'ERROR:
Authorsisnotanobject'
B.确定是否在表上启用了textinrow
下面的示例测试是否在authors表上启用了textinrow选项,以便text、ntext或image数据可以存储在它的数据行内。
USEpubs
SELECTOBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')
结果集显示在表上没有启用textinrow。
-----
0
C.确定用户定义的标量值函数是否具有确定性
下面的示例测试用户定义的标量值函数fn_CubicVolume是否具有确定性,该函数返回小数。
CREATEFUNCTIONfn_CubicVolume
--Inputdimensionsincentimeters.
(@CubeLengthdecimal(4,1),@CubeWidthdecimal(4,1),
@CubeHeightdecimal(4,1))
RETURNSdecimal(12,3)--CubicCentimeters.
WITHSCHEMABINDING
AS
BEGIN
RETURN(@CubeLength*@CubeWidth*@CubeHeight)
END
--Isitadeterministicfunction?
SELECTOBJECTPROPERTY(OBJECT_ID('fn_CubicVolume'),'IsDeterministic')
结果集显示fn_CubicVolume是确定性函数。
-----
1
请参见