数据库高级应用技术04-(触发器).ppt
审计内容*审计表存储的内容:修改前pay字段的值修改后pay字段的值记录被修改的时间登陆数据库服务器修改数据的ip地址登陆数据库服务器的帐号信息123456*高等职业技术院校教材《数据库高级应用技术》主编:温立辉*触发器本单元教学目标理解触发器的概念认识、了解触发器的作用理解触发器的原理、过程掌握触发器的开发语法触发器概念*010204在插入、删除、修改特定表中数据时触发执行拥有比数据库本身更强大的数据控制能力触发器是一种特殊的存储过程触发器作用*安全性可以基于数据库的值使用户具有操作数据库的某种权利#可以基于时间限制用户的操作例如不允许下班后和节假日修改数据库数据#可以基于数据库中的数据限制用户的操作例如不允许股票的价格的升幅一次超过10%数据审计可以跟踪用户对数据库的操作#审计用户操作数据库的语句#把用户对数据库的更新写入审计表触发器作用*数据约束1#实现数据完整性检查和约束2例如回退任何企图买进超过自己资金的货物3#提供可变的缺省值4连环更新5#修改或删除时级联修改或删除其它表中的与之匹配的行6#修改或删除时把其它表中与之匹配的行设成NULL值7#修改或删除时把其它表中与之匹配的行级联设成缺省值8触发器原理*使用临时表01使用临时表备份之前的数据02逐行检查03对每一行数据逐一进行检查04以上两点大大增加了系统开销05一般不能随意使用触发器06创建触发器*创建语法CREATETRIGGER+触发器名称+触发时间点+触发事件+ON+表名+FOREACHROWBEGIN…END触发时间点:BEFORE或AFTER指明是在触发事件之前还是之后执行触发事件:INSERT、UPDATE、DELETE事件如:CREATETRIGGERupd_checkBEFOREUPDATEONaccountFOREACHROWBEGIN…END删除触发器*01删除语法03如:02DROPTRIGGER+触发器名称04DROPTRIGGERupd_check触发器案例-建表*01-创建表格:tab102DROPTABLEIFEXISTStab1;03CREATETABLEtab1(04tab1_idvarchar(11)05);06-创建表格:tab207DROPTABLEIFEXISTStab2;08CREATETABLEtab2(09tab2_idvarchar(11)10);第一个触发器*--功能:往tab1表添加记录后自动将此记录增加到tab2表中DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_tab1AFTERINSERTONtab1FOREACHROWBEGINinsertintotab2(tab2_id)values(new.tab1_id);END;//DELIMITER;触发器测试*往tab1插入记录01INSERTINTOtab1(tab1_id)values(0001)02检索tab1、tab2数据03SELECT*FROMtab104SELECT*FROMtab205课程练习1*功能作用:删除tab1表记录后自动将tab2表中对应的记录删去t_afterdelete_on_tab1创建触发器:参考代码*new与old*old:代表操作执行前的数据行