MySQL数据库应用与开发技术课件:触发器.pptx
MySQL数据库应用与开发技术触发器
本单元教学目标认识、了解触发器的作用理解触发器的原理、过程掌握触发器的开发语法理解触发器的概念
3触发器概念触发器是一种特殊的存储过程在插入、删除、修改特定表中数据时触发执行拥有比数据库本身更强大的数据控制能力
4触发器作用安全性可以基于数据库的值使用户具有操作数据库的某种权利#可以基于时间限制用户的操作例如不允许下班后和节假日修改数据库数据#可以基于数据库中的数据限制用户的操作例如不允许股票的价格的升幅一次超过10%数据审计可以跟踪用户对数据库的操作#审计用户操作数据库的语句#把用户对数据库的更新写入审计表
5触发器作用数据约束实现数据完整性检查和约束例如回退任何企图买进超过自己资金的货物提供可变的缺省值连环更新修改或删除时级联修改或删除其它表中的与之匹配的行修改或删除时把其它表中与之匹配的行设成NULL值修改或删除时把其它表中与之匹配的行级联设成缺省值
6触发器原理使用临时表使用临时表备份之前的数据逐行检查对每一行数据逐一进行检查以上两点大大增加了系统开销一般不能随意使用触发器
7创建触发器创建语法CREATETRIGGER+触发器名称+触发时间点+触发事件+ON+表名+FOREACHROWBEGIN…END触发时间点:BEFORE或AFTER指明是在触发事件之前还是之后执行触发事件:INSERT、UPDATE、DELETE事件如:CREATETRIGGERupd_checkBEFOREUPDATEONaccountFOREACHROWBEGIN…END
8删除触发器删除语法DROPTRIGGER+触发器名称如:DROPTRIGGERupd_check
9触发器案例|建表--创建表格:tab1DROPTABLEIFEXISTStab1;CREATETABLEtab1(tab1_idvarchar(11));--创建表格:tab2DROPTABLEIFEXISTStab2;CREATETABLEtab2(tab2_idvarchar(11));
10第一个触发器--功能:往tab1表添加记录后自动将此记录增加到tab2表中DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_tab1AFTERINSERTONtab1FOREACHROWBEGINinsertintotab2(tab2_id)values(new.tab1_id);END;//DELIMITER;
11触发器测试往tab1插入记录INSERTINTOtab1(tab1_id)values(0001)检索tab1、tab2数据SELECT*FROMtab1SELECT*FROMtab2
12课程练习1创建触发器:t_afterdelete_on_tab1功能作用:删除tab1表记录后自动将tab2表中对应的记录删去
13参考代码
14课程练习1|补充选做创建触发器:t_afterupdate_on_tab1功能作用:更新tab1表记录后自动将tab2表中对应的记录更新
15参考代码
16new与oldold:代表操作执行前的数据行new:代表操作执行后的数据行若要执行如下语句:updateUsersetscore=80whereuser_id=1则old表示未执行update语句前user_id=1这行记录则new表示执行update语句后user_id=1这行记录old.字段名=未执行操作前的该行对应的某字段值new.字段名=执行操作后的该行对应的某字段值old.score=60new.score=80
17new与oldnew赋值:只能在before中使用,不能在after中使用更新操作前使用before先赋值,再插入到数据库中如,以下语句是正确的:CREATETRIGGERupdatepriceBEFOREinsertONconsumeinfoFOREACHROWBEGINsetnew.金额=0;END;在after中:new赋值已经结束,只能读取内容如,以下语句是错误的:CEATETRIGGERupdatepriceAFTERinsertONconsumeinfoFOREACHROWBEGINsetnew.金额=0;END;
18new与old总结归纳:new可在before触发器中赋值、取