外键,check,索引等,根据ID来检索详细信息

sql server OBJECTPROPERTY 函数

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

sql serverinsertdeleteobjectnull数据库

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

时间: 2024-10-13 05:14:11

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

sql-主键、外键、索引

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

MyEclipse数据库教程:表、外键和索引的使用方法

MyEclipse数据库教程:表.外键和索引的使用方法 MyEclipse的数据库资源管理器工具提供了大量的向导和操作,来轻松地创建和删除表.关系和索引.在本教程中,你将学习到: 创建和删除表 创建和删除外键 创建和删除索引 没有MyEclipse?立即下载 1. 创建一个新的索引 创建索引是开发人员重要的性能工具,典型的就是在DBMS上创建一个表的索引键.然而可能在其他领域中经常需要使用ORDER BY或WHERE子句来增强性能.假设您可能在CITY中有很多订购的客户,您可以在该领域中创建索引

MySQL外键+唯一索引

MySQL外键+唯一索引 2019-08-22 1.外键 是指一个表里的列与另一张表里的列进行关系连接,可用于使用简单的数字或字母替代复杂的数据结构,不仅可以节省空间,也拥有约束功能,可减少书写出错的机会. 1.1使用方式 constraint 变量名 foreign key (列名) references 表名2(列名2): 其中变量名是自己给定的,约定不可以有重复: 列名即需要连接外键的列: 表名2值指的是外键的表: 列名2是和表中连接对应的列: 1.2实例 例如下面两个表,表1是机器状态表

主键,外键,索引的区别

主键.外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值 作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 索引--是提高查询排序的速度 个数: 主键--主键只能有一个 外键--一个表可以有多个外键 索引--一个表可以有多个唯一索引

Oracle外键不加索引引起死锁

--创建一个表,此表作为子表 create table fk_t as select *from user_objects; delete from  fk_t where object_id is null; commit; --创建一个表,此表作为父表 create table pk_t as select *from user_objects; delete from  pk_t where object_id is null; commit; --创建父表的主键 alter table

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

1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary key,name tyoe[length],age type[length],class_id); 方法二:alter更改表添加约束 alter table table_name add constraint pk_name primary key (字段); 删除: alter table table

Mysql数据库主键,外键,索引概述

主键: 主键是数据表的唯一索引,比如学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜索一条纪录如查找一个人,就只能根据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment :自增长的类型 : 外键: 定义数据表 假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息.用来保存整机产品信息的表叫做 Pc:用来保存配件供货信息的表叫做Parts. 在Pc表中有一个字段,用来描述这款

SQL(三)-主键、外键和索引

转载出处: http://www.doc88.com/p-538467175318.html 1. 主键 (1)含义:能确定一条记录的唯一标识. (2)主键设计原则:主键应当是对用户没有意义的:主键应是单列的,一遍提高连接和筛选的操作效率:主键不应更新:主键不应包含动态变化的数据,比如,时间戳.创建/修改时间列:主键应当自动生成. (3)查看方式:使用navicat premium 连接数据库,选中表格,右键-design table,选择indexes,有unique标识即为主键. 2.外键

MySQL的几个概念:主键,外键,索引,唯一索引

概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引. 外键(foreign key) 是用于建立和加强两个表数据之间的链接的一列或多列.外键约束主要用来维护两个表之间数据的一致性.简言之,表的外键就是另一表的主键,外键将两表联系起来.一般情况下,要删除一张表中的主键必须首