资源描述:
《关系数据库与SQL Server 2008 第2版 教学课件 作者 龚小勇 第27讲 触发器.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、重庆电子工程职业学院授课方案(教案)课名:教师:班级:编写时间:课题:触发器教学目的及要求:1.理解触发器的概念和作用2.了解触发器的触发方式3.了解inserted和deleted临时表4.触发器的创建教学重点:触发器的创建、根据触发器的功能正确检验触发器的作用教学难点:创建不同类型的触发器教学步骤及内容:复习并导入新课Ø存储过程的含义、优点、.类型(系统存储过程、用户存储过程)Ø创建存储过程引:实现数据完整性三个方面:u实现“实体完整性”的方法:primarykey约束、unique约束、标识列、惟一索引u
2、实现“域完整性”的方法:check约束、规则对象、default约束、默认值对象、notnull约束u实现“参照完整性”的方法:foreignkey约束请思考:当用户对表进行了不应该的操作时,希望系统能自动撤消该操作,并给出用户提示信息,能否用以上的方法来实现?一、触发器概述1.触发器的概念Ø含义:是一种对表或视图执行insert、delete、update操作时,由系统自动执行的特殊的存储过程。Ø创建触发器的目的:对表实现复杂的数据完整性约束,以防止不正确的操作。2.触发器的作用Ø对数据库进行级联修改:级联修
3、改是指当用户修改一张表的记录时,该记录在其他表中的修改自动实现。Ø实现比check约束更为复杂的限制:check约束的检查条件表达式不允许引用其他表中的字段,而触发器则可以引用其他表中的字段。Ø触发器可以发现改变前后表中数据的不同,并根据这些不同来进行相应的操作。说明:约束的执行优先于触发器。实际运用时,如果约束的功能已经能满足应用程序的需求,最好不用触发器。当约束无法满足要求时,触发器就极为有用。3.触发器的类型Ø后触发器(掌握):只有执行了insert、delete、update操作后,才激发的触发器。Ø替
4、代触发器(了解):不执行命令所定义的insert、delete、update操作,而仅执行触发器中定义的代码。旁批栏:4.临时表Ø每个触发器被激活时,系统都为它自动创建两个临时表:inserted表、deleted表Ø临时表的特点:u是逻辑表,由系统来维护,用户不能对它们进行修改。u其结构与源表(激活触发器的表)结构相同u触发器执行完成后,该临时表会自动被删除。Ødeleted临时表:存放执行delete或update语句后,要从源表中删除的行。特点:源表和delete表不会有相同的行。Øinserted临时表
5、:存放执行insert或update语句后,要在源表中插入的新行(新行同时插入了源表和inserted表中)。特点:源表和inserted表有相同的行。二、创建和激活触发器Ø创建格式:createtrigger触发器名on表名
6、视图名for
7、after
8、insteadof[insert,update,delete]asSQL语句Ø说明:1个表上可有多个触发器。每个触发器只能作用在一个表上。1.创建insert触发器实例1:为XSQK表创建一个INSERT触发器,当插入的新行中“所在系”的值不是“计算机应用”时,
9、就撤销该插入操作,使用RAISERROR语句返回错误信息。然后激活触发器以实现数据完整性CREATETRIGGERT_INSERT_XSQKONXSQK——在XSQK表上创建触发器FORINSERT——创建INSERT后触发器ASDECLARE@szxvarchar(20)——声明变量SELECT@szx=所在系FROMInserted——获取新插入行的“所在系”值IF@szx!='计算机应用'——如果新插入行“所在系”值不是“计算机”,则撤销插入,并给出错误信息BEGINROLLBACKTRANSACTION
10、——撤销插入操作RAISERROR('不能插入非计算机应用系的学生信息!',16,10)——返回一个错误信息ENDGOINSERTXSQK(学号,姓名,性别,出生日期,专业名,所在系)VALUES('2012140101','陈希',1,'1995-8-12','环境艺术','传媒')——激活触发器的语句补充说明:Øraiserror语句的作用:将错误信息显示在屏幕上,并可记录在日志中。Øraiserror语句可返回两种类型的信息:u保存在sysmessages系统表中的用户自定义错误信息。u该语句中以字符串形
11、式给出的错误信息。u例:raiserror(‘不能插入非计算机系的学生信息!’,16,1),其中“16”表示:错误的严重等级,0~18可被任何用户引发,19~25只能由系统管理员引发。其中“1”表示:发生错误时的状态信息(0~127)。课堂练习1:在xscj库的xs_kc表上创建1个名为t1的触发器,当向xs_kc表进行插入操作时激发该触发器,并给出提示信息“有新成绩插入到xs_kc表