第12章数据完整性.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章数据完整性

第十二章 数据完整性 第十二章 数据完整性 Contents 12.1 数据完整性概述 为了保证数据的质量,SQL Server 2000使用强制的数据完整性来确保这一点。例如,公司数据库中某职员的ID是2021,那么在数据库中的其他职员ID就不能再使用这一值,否则将造成混乱。再例如数据表中人员的岁数,不可能超过150这一数值,所以在设计该列时可以加上约束条件,限制该列取值范围为1~150,数据库将自动拒绝输入错误的数值。 为了实现数据的完整性,在设计表时就两个重要的步骤:标识列的有效值和确定如何强制列中的数据完整性。数据完整性可分为以下四个类型: ·实体完整性:实体完整性将行定义为特定表的唯一实体。等同于为唯一性,例如数据表中的主键,可以通过索引、UNIQUE 约束、PRIMARY KEY 约束或 IDENTITY 属性来实现。 ·域完整性:将列中的数据限制在某个范围域内。有三种方式,限制类型、限制格式和指定值域。可以通过CHECK约束、FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL实现。 ·引用完整性:在输入或删除记录时,引用完整性保持表之间已定义的关系,最为典型的就是外键。引用完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。 ·用户定义完整性:用户在创建数据库时自行定义的不属于前面三项完整性的独特约束,例如,触发器和存储过程等。 12.2.1 deleted和inserted表 在正式介绍触发器之前我们必须先了解由SQL Server 2000自行创建和管理的两个表:deleted和inserted表。deleted表存储因DELETE和UPDATE所涉及到数据的副本,也就是说用户删除的数据在下个SQL语句执行之前都将在deleted表中保留一个副本;相同的,inserted表则临时保留上次INSERT或者UPDATE对数据库中添加数据的副本。 这里要简单说明一下,UPDATE在SQL Server 2000中的执行过程是先DELETE旧的数据,然后再向表中INSERT新的数据。整个UPDATE操作将会使服务器建立deleted表后再建立一个inserted表,所以我们可以到下面这个关系:UPDATE=DELETE+INSERT。 用户可以随时访问这两个表中的内容,但是不能直接对表中的数据进行修改。用户可以利用它们来测试某些数据修改的效果及设置触发器操作的条件,在触发器执行完毕后这两个临时表就被删除了,直到下一次操作时才会重新建立新表。 12.2.2 触发器概述 触发器是一种特殊类型的存储过程,它是由简单或者复杂的T-SQL语句组成。其特殊之处就在于触发器无法手动执行,只有在数据表的内容该表时,触发器会自动运行。当用户执行DELETE、UPDATE和INSERT这三个动作时,触发器就会启动。而大部分触发器在运行时都会使用的8.1.1中提到的deleted和inserted表。 触发器都依附于单个表或者视图,也就是说每个表或者视图都可以有自己的触发器集合。当表或视图的数据被改动时,属于该表或视图的触发器就会启动,执行预定义好的T-SQL语句。 触发器的类型有五种:UPDATE、INSERT、DELETE、INSTEAD OF和AFTER。前面三种很容易理解,分别是执行UPDATE、insert、delete语句时自动启动的触发器。而INSTEAD OF和AFTER则是SQL Server 2000新增的触发器类型,具体特性如下: ·AFTER 触发器在触发操作(INSERT、UPDATE 或 DELETE)后和处理完任何约束后激发。可通过指定 AFTER 或 FOR 关键字来请求 AFTER 触发器。因为 FOR 关键字与 AFTER 的效果相同,所以具有 FOR 关键字的触发器也归类为 AFTER 触发器。 ·INSTEAD OF 触发器代替触发动作进行激发,并在处理约束之前激发。 对于每个触发操作(UPDATE、DELETE 和 INSERT),每个表或视图只能有一个 INSTEAD OF 触发器。而一个表对于每个触发操作可以有多个 AFTER 触发器。 INSTEAD OF触发器的作用是在一些无法更新的视图支持更新就,它可以用一段更加复杂的对底层数据表更新T-SQL语句来代替对视图的更新。INSTEAD OF在对视图的更新操作实行之前启动,以代替用户更新视图的操作。 12.2.3 触发器的基本操作 在用T-SQL语句创建触发器之前我们必须先明确,以下的语句是不能在触发器中使用的: ·ALTER DATABASE  ·CREATE DATABASE  ·DISK INIT  ·DISK

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档