第8章 SQL Server 2000数据库控制及维护.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【例8-14】为CollegeMIS数据库创建一个名为Sex_Default的默认值,值为“男”。然后把该默认值绑定到Teacher表的Sex字段上。 USE CollegeMIS GO CREATE Default Sex_Default As 男 GO EXEC sp_bindefault Sex_Default,Teacher.Sex GO 8.1.4 使用默认值实施数据完整性控制 1.使用Transact-SQL语句和系统存储过程管理默认值 (3)解绑默认值 【格式】[EXEC] sp_unbindefault tablename_columnname|UDTname 【功能】把tablename_columnname指定的列上或UDTname指定的用户自定义数据类型上绑定的默认值去掉。 (4)删除默认值 【格式】DROP DEFAULT default_name[ ,...n ] 【功能】删除由default_name作为默认值名指定的默认值。可删除多个默认值,默认值之间用“,”分开。 【例如】EXEC sp_unbindefault Teacher.Sex 【例如】DROP DEFAULT Sex_Default 8.1.5 使用触发器实施数据完整性控制 1.触发器概述 (1)触发器的概念 触发器也是实施数据完整性控制的一种手段,它是一种特殊类型的存储过程,由Transact-SQL语句组成,不允许带参数,与表紧密相连,可以看作表定义的一部分。它是在用户对表中的数据进行修改、插入或删除时,由系统自动调用,而不允许由用户或程序通过名称调用。 触发器是基于一个表创建的,但是可以针对多个表进行操作,因此利用触发器不但能够对数据库中的相关表实施级联操作,而且可以引用其他表中的列来完成检查工作以实现比CHECK约束更为复杂的数据完整性约束。利用触发器还可以评估数据修改前后的表状态,并根据其差异采取对策。在一个表中可以存在三种不同操作(INSERT、UPDATE、DELETE)的触发器,以对相应的修改操作响应并进行处理。 8.1.5 使用触发器实施数据完整性控制 1.触发器概述 (2)触发器的种类 SOL Server 2000按触发器被激活的时机可以分为两种类型:AFTER触发器和INSTEAD OF触发器。 AFTER触发器又称为后触发器,该类触发器是在引起触发器执行的修改语句成功执行后被触发执行,如果修改语句执行失败,触发器将不会执行。此类触发器只能定义在表上,而且可以为每个触发操作(INSERT,UPDATE或DELETE)创建多个AFTER触发器。注意,该类触发器不能创建在视图上。 INSTEAD OF触发器又称为替代触发器,表示不执行引起触发器执行的修改语句,而只执行触发器本身。该类触发器既可在表上定义,也可在视图上定义。对于每个触发操作(INSERT,UPDATE和DELETE),只能定义一个INSTEAD OF触发器。 8.1.5 使用触发器实施数据完整性控制 1.触发器概述 (3)Deleted表与Inserted表 在触发器的执行过程中,SQL Server建立并管理两个临时表:Deleted表和Inserted表。这两个表包含了在激发触发器的操作中插入、修改或删除的记录。可以利用这一特性来检查某些数据修改情况,并根据修改情况决定触发器应执行的操作。这两个特殊表用户只能查询,而不能直接修改。 。 在执行INSERT语句(插入操作)时被添加的记录将存储在Inserted表中。在执行DELETE语句(删除操作)时,表中被删除的记录会发送到Deleted表。在执行UPDATE语句(修改操作)时,SQL Server先将要进行修改的记录存储到Deleted表中,然后再将修改后的记录复制到Inserted表中。 8.1.5 使用触发器实施数据完整性控制 2.创建触发器 (1)使用企业管理器创建触发器 【例8-15】为CollegeMIS数据库的Teacher表创建一个名为Insert_DepartNo的INSERT触发器。当在Teacher表插入数据时,如果插入了Department(系)表中没有的DepartNo(系号)的值,则提示用户不能插入记录,否则提示记录插入成功。 CREATE TRIGGER [Insert_DepartNo] ON [dbo].[Teacher] FOR INSERT AS DECLARE @DepartNo char(2) SELECT @DepartNo=Department.DepartNo FROM Department,Inserted WHER

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档