分类: Sql server2008-11-26 11:11 1562人阅读 评论(0) 收藏 举报

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

约束

带有 ON DELETE CASCADE选项的外键约束。

CnstIsDisabled

约束

禁用的约束。

1 = True
0 = False

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 或 image 数据可以存储在它的数据行内。

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

外键,check,索引等,根据ID来检索详细信息的更多相关文章

  1. sql-主键、外键、索引

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  2. ORACLE中关于外键缺少索引的探讨和总结

    在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引.那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创 ...

  3. (转)ORACLE中关于外键缺少索引的探讨和总结

    在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引.那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创 ...

  4. Oracle外键不加索引会引起死锁问题

    转载链接:http://www.jb51.net/article/50161.htm 这篇文章主要介绍了Oracle外键不加索引引起死锁的情况及解决,需要的朋友可以参考下 --创建一个表,此表作为子表 ...

  5. sql语句创建主键、外键、索引、绑定默认值

    use Mengyou88_Wuliu --创建公司表 create table dbo.Company2 ( CompanyID ,) not null, CompanyName ) null, A ...

  6. Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

  7. mysql主键,外键,索引

    主键 唯一而非空,只能有一个 作用: 1.唯一的标识一行  2.作为一个可以被外键有效引用的对象  3.保证数据完整性 设计原则: 1. 主键应当是对用户没有意义的.如果用户看到了一个表示多对多关系的 ...

  8. SQL SERVER之查询外键及索引

    --查询表或数据库中的所有外键 select A.name as 约束名, object_name(b.parent_object_id) as 外健表, c.name as 外键列, object_ ...

  9. MySQL:主键、外键、索引(一)

    干货: 主键是关系表中记录的唯一标识.主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型.主键也不应该允许NULL.可以使用多个列作为联合主键,但联合主键并不常用. ...

随机推荐

  1. 关于Lucene全文检索相关技术

    Lucene技术专门解决海量数据下的模糊搜索问题. Lucene主要完成的是数据预处理.建立倒排索引,及搜索.排名.高亮显示等功能 全文检索相关词语概要: 单词和文档矩阵: 文档(Document): ...

  2. java笔记之IO4文本复制

    * 复制文本文件. *  * 数据源:从哪里来 * a.txt -- 读取数据 -- FileInputStream  *  * 目的地:到哪里去 * b.txt -- 写数据  -- FileOut ...

  3. 解决IE和firefox 下flash盖住div的问题(转载)

    原文地址:http://www.oschina.net/question/171410_26563 做的企业站 顶部是flash的滚动图片. 右侧是在线客户,但是flash盖住了在线客户的div 网上 ...

  4. SQL两个字段排序

    ORDER BY  后可加2个字段,用英文逗号隔开. 1.f1用升序, f2降序,sql该这样写: 1 ORDER BY  f1, f2  DESC 2.也可以这样写,更清楚: 1 ORDER BY  ...

  5. bzoj 2456: mode【瞎搞】

    这题加个#include都会MLE-- 神思路,每个数抵消宇哥和它不同的数,最后剩下的就是众数 #include<cstdio> int n,la,x,tot; int main() { ...

  6. 水题不AC,自挂二叉树——Chemist

    学长让我们刷USACO的水题果然是有道理的,做了四道挂了两道...细节处理一定要小心!大概都是NOIP Day1 T1的难度,但是一定要考虑全面否则还是凉凉啊. 一.USACO1.1贪婪的送礼者 题目 ...

  7. 手机端实现6位短信验证码input输入框效果(样式及代码方法)

    微信移动端4位.6位.多位验证码密码输入框功能的实现代码,实现思路: 方案1: 写一个简单的input框. 评估:样式不好看,待定. 方案2: 就是用6个input框,每输入一个数字之后,切换到下一个 ...

  8. linux php5.6 提示 could not find driver

    1.进入在PHP源码包中进入ext/pdo_mysql # wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 2.然后是解压缩. # tar -zxvf ...

  9. SIFT特征点检测与匹配

    SIFT的步骤如下: (1) 尺度空间极值检测(Scale-space Extrema Detection) 也就是在多尺度高斯差分(Difference of Gauss)空间中检测极值点(3x3x ...

  10. spark性能优化(包括优化原理及基本方法)

    https://www.jianshu.com/p/b8841a8925fb spark性能优化 1.诊断内存的消耗 2. 高性能序列化类库 3. 优化数据结构 4. 对多次使用的rdd进行持久化或者 ...