资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
实验十一触发器实验目的 : 1理解触发器的基本概念及工作原理;2掌握触发器的创建、查看、修改和删除。实验操作触发器是一种特殊类型的存储过程,它在指定的表中的数据发生变化时(执行 INSERT、DELETE 和 UPDATE 语句)自动生效。使用触发器可以实现比CHECK 约束更为复杂的用户自定义完整性规则。一. 触发器的工作原理由于使表中数据发生变化的操作有插入、更新和删除,所以触发器可以分为三类:INSERT 触发器、 UPDATE 触发器和DELETE 触发器。1 INSERT 触发器工作过程当试图向表中插入记录时,INSERT 触发器(如果有)自动执行,此时系统自动创建一个 inserted 表,新的记录被添加到触发器表和inserted 表。触发器可以检查inserted 表,确定是否执行触发器动作和如何执行触发器动作。2 DELETE 触发器工作过程当试图从表中删除信息时,DELETE 触发器被触发, 此时系统自动创建一个deleted 表,被删除的行被放置到这个特殊的表中。被删除的行在触发器表中将不再存在。因此, 触发器表和 deleted表之间没有共同的记录。3 UPDATE 触发器工作过程UPDATE 语句可以看成两步,删除一条旧记录,插入一条新记录。所以,UPDATE 触发器被触发时, 自动创建一个deleted表和一个 inserted表, UPDATE 语句使原始行移入deleted表,将更新行插入到inserted 表中。二. 触发器的创建创建触发器主要使用T-SQL 语句 CREATE TRIGGER 命令,该命令的语法格式如下:CREATE TRIGGER 触发器名称ON 表名 | 视图名 WITH ENCRYPTION FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE AS sql 语句 .n 语句中的WITH ENCRYPTION,表示对定义脚本加密。AFTER 用于指定触发器只有在触发SQL 语句中指定的所有操作都已成功执行后才激发,并且不能在视图上定义AFTER 触发器。 FOR 的作用与AFTER 相同。 INSTEAD OF 用于指定执行触发器而不是执行触发SQL 语句,从而替代触发语句的操作。INSTEAD OF 触发器常用于影响多个基表的更新视图操作。实验操作1: 为学生表创建一个名为INSERT_XS 的 INSERT 触发器,触发器可以显示当前名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 插入的新记录,并对触发器进行验证。1)启动 Management Studio 2)新建查询,在查询编辑窗口中输入如下代码:USE JXGL GO -创建触发器CREATE TRIGGER INSERT_XS ON XS AFTER INSERT AS SELECT * FROM INSERTED GO -验证触发器INSERT INTO XS VALUES(05050101, 张能宝 , 0, 1982-11-09, 5) 3)单击工具栏中的“执行”或直接按下F5实验操作2 为课程表创建更新触发器Update_KC,若更新了学时字段XSS,-则触发器强制学分XF 等于 XSS/20。1)启动 Management Studio 2)新建查询,在查询编辑窗口中输入如下代码:USE JXGL GO CREATE TRIGGER Update_KC ON KC AFTER UPDA TE AS IF UPDA TE(XSS) -判断是否更新了XSS 列UPDATE KC SET XF = INSERTED.XSS / 20 FROM KC JOIN INSERTED ON KC.KCH = INSERTED.KCH GO 3)单击工具栏中的“执行”或直接按下F5实验操作3为 KCCJ 视图建立名为UPDATE_KCCJ 的 INSTEAD OF 触发器,实现可以在一个 UPDATE 语句中同时更新KCCJ 视图的 XM 、KCMC 、PSCJ、SJCJ 和 QMCJ 中的两列或多列。并进行验证。说明:使用视图更新数据是不能影响多个基表的,而我们可以利用INSTEAD OF 触发器的特点, 将影响多个基表的视图更新操作转换为分别更新对应的基表。根据这一思路, 本题所要求的触发器如下所示。1)启动 Management Studio 2)新建查询,在查询编辑窗口中输入如下代码:USE JXGL GO CREATE TRIGGER UPDA TE_KCCJ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - ON KCCJ INSTEAD OF UPDA TE AS -判断如果更新了KCCJ 视图的 XM 列,就转化为更新XS 表的 XM 列IF UPDA TE(XM) UPDATE XS SET XM = INSERTED.XM FROM XS JOIN INSERTED ON XS.XH = INSERTED.XH -判断如果更新了KCCJ 视图的 KCMC 列,就转化为更新KC 表的 KCMC 列IF UPDA TE(KCMC) UPDATE KC SET KCMC = INSERTED.KCMC FROM KC JOIN INSERTED ON KC.KCH = INSERTED.KCH -判断如果更新了KCCJ 视图的 PSCJ、SJCJ或 QMCJ 列,就转化为更新CJ 表的对应列IF UPDA TE(PSCJ) OR UPDATE(SJCJ) OR UPDA TE(QMCJ) UPDATE CJ SET PSCJ = INSERTED.PSCJ, SJCJ = INSERTED.SJCJ, QMCJ = INSERTED.QMCJ FROM CJ JOIN INSERTED ON (CJ.XH = INSERTED.XH AND CJ.KCH = INSERTED.KCH) GO -对 UPDATE_KCCJ 进行验证UPDATE KC_CJ SET KCMC = 程序设计基础 , SJCJ = SJCJ * 1.1 WHERE KCMC = C程序设计 GO 3)单击工具栏中的“执行”或直接按下F5三. 触发器的修改修改触发器主要使用T-SQL 语句 ALTER TRIGGER命令,该命令的语法格式如下:ALTER TRIGGER 触发器名称ON 表名 | 视图名 WITH ENCRYPTION FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE AS sql 语句 .n 实验操作4 将实验操作2 中创建的触发器Update_KC 修改为当向课程表中插入或更新数据时显示新插入或更新记录信息。1)启动 Management Studio 2)新建查询,在查询编辑窗口中输入如下代码:USE JXGL GO 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - ALTER TRIGGER Update_KC ON KC AFTER INSERT, UPDA TE AS SELECT * FROM INSERTED GO 3)单击工具栏中的“执行”或直接按下F5四. 触发器的删除删除触发器可以使用DROP TRIGGER 命令,此命令的语法如下:DROP TRIGGER 触发器名 ,.n 实验操作5将 Update_KC 和 INSERT_XS 触发器删除。1)启动 Management Studio 2)新建查询,在查询编辑窗口中输入如下代码:USE JXGL GO DROP TRIGGER Update_KC, INSERT_XS 3)单击工具栏中的“执行”或直接按下F5实验练习实验练习1:为成绩表创建DELETE 触发器 DELETE_CJ ,触发器可以显示当前被删除的记录,并进行验证。实验练习2:为课程表建立名为MODIFY_KC的触发器,当向表中插入或更新数据时,触发器能打印显示影响的课程数和学时总数。实验练习3: 为成绩表创建触发器Insert_CJ ,当插入成绩时,触发器能强制每个学生所学课程数不超过10 门。提示:触发器可以检查由于新记录的插入,是否出现了有学生的总课程数超过10 门,若超过则撤消插入操作(用ROLLBACK TRANSACTION) 。实验练习4: 为成绩表创建触发器Modify_CJ ,当插入成绩记录或是更新到PSCJ 、SJCJ 或QMCJ 时,触发器能自动更新ZP为 PSCJ * 0.2 + SJCJ * 0.3 + QMCJ * 0.5。实验练习5:为 BJXSRS视图创建名为BKGX 的 INSTEAD OF触发器,当更新BJXSRS时,触发器打印输出“此视图不可更新!” 。并进行验证。实验练习6:修改实验练习1 中创建的 DELETE_CJ 触发器,触发器能打印显示被删除的记录中成绩不及格的记录数。实验练习7:将 MODIFY_KC和 Insert_CJ 触发器删除。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号