SQL SERVER OBJECTPROPERTY()函数的用法

OBJECTPROPERTY

返回当前数据库中对象的有关信息。数据库

语法

OBJECTPROPERTY id , property )缓存

参数

id架构

一个表达式,包含当前数据库中某个对象的 ID。id 的数据类型是 intide

Property函数

一个表达式,包含针对由 id 指定的对象将要返回的信息。Property 能够是下面这些值中的一个。测试


说明  除非加以注释,不然,若是 property 是无效的属性名,则返回 NULL。优化


属性名称 对象类型 描述和返回的值
CnstIsClustKey 约束 带有汇集索引的主键。

1 = True
0 = Falseui

CnstIsColumn 约束 COLUMN 约束。

1 = True
0 = Falsespa

CnstIsDeleteCascade 约束 带有 ON DELETE CASCADE 选项的外键约束。
CnstIsDisabled 约束 禁用的约束。

1 = True
0 = Falseorm

CnstIsNonclustKey 约束 带有非汇集索引的主键。

1 = True
0 = False

CnstIsNotTrusted 约束 启用约束时未检查现有行,因此可能不是全部行都受约束的控制。

1 = True
0 = False

CnstIsNotRepl 约束 使用 NOT FOR REPLICATION 关键字定义约束。
CnstIsUpdateCascade 约束 带有 ON UPDATE CASCADE 选项的外键约束。
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 触发器 INSTEAD OF 触发器。
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 表、视图 表或视图具备 INSTEAD OF 触发器。

1 = True
0 = False

HasUpdateTrigger 表、视图 表或视图具备 UPDATE 触发器。

1 = True
0 = False

IsAnsiNullsOn 函数、过程、表、触发器、视图 指定表的 ANSI NULLS 选项设置为 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 任何 FOREIGN KEY 约束。

1 = True
0 = False

IsIndexed 表、视图 带有索引的表或视图。
IsIndexable 表、视图 能够建立索引的表或视图。
IsInlineFunction 函数 内嵌函数。

1 = 内嵌函数
0 = 非内嵌函数
NULL = 不是函数,或者是无效的对象 ID。

IsMSShipped 任何 在安装 Microsoft SQL Server 2000 的过程当中建立的对象。

1 = True
0 = False

IsPrimaryKey 任何 PRIMARY KEY 约束。

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 表具备 FOREIGN KEY 约束。

1 = True
0 = False

TableHasForeignRef 表由 FOREIGN KEY 约束引用。

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 表不是真实的。根据须要 SQL Server 对其进行内部具体化。

1 = True
0 = False

TableIsPinned 驻留表以将其保留在数据高速缓存中。

1 = True
0 = False

TableTextInRowLimit text in row 所容许的最大字节数,若是没有设置 text in row 选项则为 0。
TableUpdateTrigger 表具备 UPDATE 触发器。

>1 = 给定类型的第一个触发器的 ID。

TableUpdateTriggerCount 表具备指定数目的 UPDATE 触发器。

>1 = 给定类型的第一个触发器的 ID。


返回类型

int

注释

OBJECTPROPERTY(view_id,'IsIndexable') 可能会耗费大量的计算机资源,这是由于对 IsIndexable 属性的评估须要分析视图定义、进行规范化以及部分优化。

当至少添加了表的一列以用于索引时,OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex') 将返回"1"(True)。只要添加了用于索引的第一列后,全文索引便可用于填充。

当除去索引中的最后一列时,索引变成非活动。

若是某些索引键需求条件得不到知足,那么实际建立索引仍然可能会失败。详细信息请参见 CREATE INDEX。

示例
A. 查明 authors 是否为一个表

下面的示例测试 authors 是否为一个表。

IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 1
   print 'Authors is a table'

ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') = 0
   print 'Authors is not a table'

ELSE IF OBJECTPROPERTY ( object_id('authors'),'ISTABLE') IS NULL
   print 'ERROR: Authors is not an object'
B. 肯定是否在表上启用了 text in row

下面的示例测试是否在 authors 表上启用了 text in row 选项,以便 textntext 或 p_w_picpath 数据能够存储在它的数据行内。

USE pubs
SELECT OBJECTPROPERTY(OBJECT_ID('authors'),'TableTextInRowLimit')

结果集显示在表上没有启用 text in row

-----
0
C. 肯定用户定义的标量值函数是否具备肯定性

下面的示例测试用户定义的标量值函数 fn_CubicVolume 是否具备肯定性,该函数返回小数。

CREATE FUNCTION fn_CubicVolume
-- Input dimensions in centimeters.
   (@CubeLength decimal(4,1), @CubeWidth decimal(4,1),
   @CubeHeight decimal(4,1) )
RETURNS decimal(12,3) -- Cubic Centimeters.
WITH SCHEMABINDING
AS
BEGIN
   RETURN ( @CubeLength * @CubeWidth * @CubeHeight )
END

--Is it a deterministic function?
SELECT OBJECTPROPERTY(OBJECT_ID('fn_CubicVolume'), 'IsDeterministic')

结果集显示 fn_CubicVolume 是肯定性函数。

-----
1
相关文章
相关标签/搜索