




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
网络数据库讲稿(触发器) 第一篇:网络数据库讲稿(触发器)网络数据库讲稿3/26/2013触发器P191一、触发器概述1.是一种特殊的存储过程。2.不能被显式调用,只能由一些特定的操作(命令)引发(激活),这些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每个触发器由三部分组成①触发器名称:命名规则与变量名、存储过程名相同;②激活该触发器的操作(命令动词)。③一个存储过程。4.使用触发器可强制实现数据的一致性和完整性。二、触发器的分类(按引发命令分类)及其工作原理1.DML触发器(表级)(1)触发器必须依附于某一个表(触发器必须被包含在某一个表中)。(2)激活该触发器的操作:可以是INSERT、DELETE、UPDATE之一。(3)当上述操作发生在包含触发器的表上时,触发器中的过程被自动执行。(4)支持两种类型的触发器:①AFTER可以为同一表的同一操作定义多个该类型的触发器,并可定义执行顺序;②INSTEADOF同一表的同一操作只能定义一个该类型的触发器。(5)工作原理P193临时逻辑表INSERTED和DELETED。2.DDL触发器(数据库级和服务器级)(1)触发器必须依附于某一个数据库(触发器必须被包含在某一个数据库中)。(2)激活该触发器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。(3)当上述操作发生在包含触发器的数据库上时,触发器中的过程被自动执行。(4)只有AFTER型触发器。三、创建DML触发器P194用命令CREATETRIGGER创建例:1.CREATETRIGGER增加学生学分ON成绩//只能增加一条记录FORINSERTASDECLARE@XHCHAR(6),@KCHCHAR(8),@FSDECIMAL(4,1)SELECT@XH=学号,@KCH=课程编号,@FS=分数FROMINSERTEDIF@FS>=60网络数据库讲稿3/26/2013UPDATE学生SET已修学分=已修学分+(SELECT学分FROM课程WHERE课程编号=@KCH)WHERE学号=@XH2.CREATETRIGGER减少学生学分ON成绩FORDELETEASUPDATE学生SET已修学分=已修学分-(SELECTSUM(学分)FROM课程WHERE课程编号IN(SELECTDISTINCT课程编号FROMDELETEDWHERE学生.学号=DELETED.学号AND分数>=60))WHEREEXISTS(SELECTDISTINCT课程编号FROMDELETEDWHERE学生.学号=DELETED.学号AND分数>=60)3.CREATETRIGGER修改学生学分ON成绩FORUPDATEASUPDATE学生SET已修学分=已修学分-(SELECTSUM(学分)FROM课程WHERE课程编号IN(SELECTDISTINCT课程编号FROMDELETEDWHERE学生.学号=DELETED.学号AND分数>=60))WHEREEXISTS(SELECTDISTINCT课程编号FROMDELETEDWHERE学生.学号=DELETED.学号AND分数>=60)UPDATE学生SET已修学分=已修学分+(SELECTSUM(学分)FROM课程WHERE课程编号IN(SELECTDISTINCT课程编号FROMINSERTEDWHERE学生.学号=INSERTED.学号AND分数>=60))WHEREEXISTS(SELECTDISTINCT课程编号FROMINSERTEDWHERE学生.学号=INSERTED.学号AND分数>=60)4.“修改学生学分”也可改为:CREATETRIGGER修改学生学分ON成绩FORUPDATEASUPDATE学生SET已修学分=(SELECTSUM(学分)FROM课程WHERE课程编号IN网络数据库讲稿3/26/2013(SELECT课程编号FROM成绩WHERE学生.学号=成绩.学号AND分数>=60))然后可执行下列命令,并检验执行结果。--INSERTINTO成绩VALUES('200202','L2020308',83)--INSERTINTO成绩VALUES('200202','L2030501',80)--INSERTINTO成绩VALUES('200202','L2030506',75)--DELETEFROM成绩WHERE学号='200202'ANDLEFT(课程编号,1)='L'--UPDATE成绩SET分数=80WHERE学号='200202'ANDLEFT(课程编号,1)='L'四、创建DDL触发器P198例:1.P1992.CREATETRIG

永梅****33
实名认证
内容提供者


最近下载