网站大量收购独家精品文档,联系QQ:2885784924

13第13章触发器原理的及使用.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第13章 触发器原理及使用 ;13.1 触发器基本概念;13.1.1 触发器的概念及作用;13.1.1 触发器的概念及作用;13.1.2 触发器的种类;13.2 触发器原理;13.2.1 插入表的功能;13.2.2 删除表的功能;13.2.3 插入视图和删除视图;13.3 触发器的创建和管理 ;13.3.1 创建触发器;1.用对象资源管理器创建触发器 ① 启动对象资源管理器,登录到要使用的服务器。 ② 在对象资源管理器的左窗格中,展开要创建触发器的数据库文件夹,点击“表”文件夹前面的“+”号,此时在右窗格中显示该数据库的所有表。 ③ 选择创建触发器的表,点击要创建触发器的数据表前面的“+”号,右击触发器选项,在出现的下一级子菜单中选择“新建触发器”菜单项。 ;2.用CREATE TRIGGER命令创建触发器;重要生疏选项注释;举例;举例;13.3.2 管理触发器 ;13.3.2 管理触发器;13.3.3 修改、删除触发器;(2)使用Alert trigger,修改触发器的正文 语法格式: ALTER TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column ) ] [ ...n ] | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ] } ] Sql 语句 [ ...n ] } } ; USE 教学管理 GO IF EXISTS (SELECT name FROM sysobjects WHERE name =T_表改变显示 AND type = TR) DROP TRIGGER T_表改变显示 GO;13.4 使用触发器实现强制业务规则 ;13.4.1 INSERT触发器;BEGIN DECLARE @已选人数 INT,@限选人数 INT SELECT @已选人数=已选人数+1, @限选人数=限选人数 FROM 开课表 O,inserted i WHERE O.开课号=i.开课号 IF (@已选人数 @限选人数) BEGIN PRINT 选修人数已满! ROLLBACK TRANSACTION END UPDATE 开课表 SET 已选人数=@已选人数 FROM 开课表 O, inserted i WHERE O.开课号=i.开课号 END;--验证: --查看已选人数 SELECT 开课号,限选人数,已选人数 FROM 开课表 WHERE 开课号=020102 --在选课表里增加一条记录。下面用了错误捕捉方法,见例7-2。 BEGIN TRY BEGIN TRANSACTION INSERT INTO 选课表VALUES(S060306, 020102,NULL) COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH --再查看已选人数 SELECT 开课号,限选人数,已选人数 FROM 开课表 WHERE 开课号=020102 ;13.4.2 UPDATE触发器 ;BEGIN DECLARE @old_工号CHAR(6),@new_工号CHAR(6) SELECT @old_工号=工号 FROM deleted SELECT @new_工号=i.工号 FROM inserted i UPDATE 教师表 SET 负责人=@new_工号 WHERE 负责人=@old_工号 END --此时用到inserted和deleted表,在inserted表中,存放的是执行UPDATE操作的表中被修改的那些记录修改之后的新值,而在delelted表中,存放的是执行UPDATE操作的表中被修改的那些记录修改之前的旧值。;--验证 BEGIN TRAN --查询教师表 SELECT * FROM 教师表 --修改教师表中的工号,将’T01001’变为’T01003’ UPDATE 教师表 SET 工号=T010

文档评论(0)

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

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

1亿VIP精品文档

相关文档