数据库高级应用技术04-(触发器)

数据库高级应用技术04-(触发器)

ID:40220413

大小:459.81 KB

页数:41页

时间:2019-07-26

数据库高级应用技术04-(触发器)_第1页
数据库高级应用技术04-(触发器)_第2页
数据库高级应用技术04-(触发器)_第3页
数据库高级应用技术04-(触发器)_第4页
数据库高级应用技术04-(触发器)_第5页
资源描述:

《数据库高级应用技术04-(触发器)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、高等职业技术院校教材《数据库高级应用技术》主编:温立辉wenlihui2004@163.com1触发器本单元教学目标理解触发器的概念认识、了解触发器的作用理解触发器的原理、过程掌握触发器的开发语法2触发器概念触发器是一种特殊的存储过程在插入、删除、修改特定表中数据时触发执行拥有比数据库本身更强大的数据控制能力3触发器作用安全性可以基于数据库的值使用户具有操作数据库的某种权利#可以基于时间限制用户的操作例如不允许下班后和节假日修改数据库数据#可以基于数据库中的数据限制用户的操作例如不允许股票的价格的升幅一次超过

2、10%数据审计可以跟踪用户对数据库的操作#审计用户操作数据库的语句#把用户对数据库的更新写入审计表4触发器作用数据约束#实现数据完整性检查和约束例如回退任何企图买进超过自己资金的货物#提供可变的缺省值连环更新#修改或删除时级联修改或删除其它表中的与之匹配的行#修改或删除时把其它表中与之匹配的行设成NULL值#修改或删除时把其它表中与之匹配的行级联设成缺省值5触发器原理使用临时表使用临时表备份之前的数据逐行检查对每一行数据逐一进行检查以上两点大大增加了系统开销一般不能随意使用触发器6创建触发器创建语法CREAT

3、ETRIGGER+触发器名称+触发时间点+触发事件+ON+表名+FOREACHROWBEGIN…END触发时间点:BEFORE或AFTER指明是在触发事件之前还是之后执行触发事件:INSERT、UPDATE、DELETE事件如:CREATETRIGGERupd_checkBEFOREUPDATEONaccountFOREACHROWBEGIN…END7删除触发器删除语法DROPTRIGGER+触发器名称如:DROPTRIGGERupd_check8触发器案例-建表--创建表格:tab1DROPTABLEIFE

4、XISTStab1;CREATETABLEtab1(tab1_idvarchar(11));--创建表格:tab2DROPTABLEIFEXISTStab2;CREATETABLEtab2(tab2_idvarchar(11));9第一个触发器--功能:往tab1表添加记录后自动将此记录增加到tab2表中DELIMITER//DROPTRIGGERIFEXISTSt_afterinsert_on_tab1;CREATETRIGGERt_afterinsert_on_tab1AFTERINSERTONtab1F

5、OREACHROWBEGINinsertintotab2(tab2_id)values(new.tab1_id);END;//DELIMITER;10触发器测试往tab1插入记录INSERTINTOtab1(tab1_id)values('0001')检索tab1、tab2数据SELECT*FROMtab1SELECT*FROMtab211课程练习1创建触发器:t_afterdelete_on_tab1功能作用:删除tab1表记录后自动将tab2表中对应的记录删去12参考代码13new与oldold:代表操作

6、执行前的数据行new:代表操作执行后的数据行若要执行如下语句:updateUsersetscore=80whereuser_id=1则old表示未执行update语句前user_id=1这行记录则new表示执行update语句后user_id=1这行记录old.字段名=未执行操作前的该行对应的某字段值new.字段名=执行操作后的该行对应的某字段值old.score=60new.score=8014new与oldnew赋值:只能在before中使用,不能在after中使用更新操作前使用before先赋值,再插入

7、到数据库中如,以下语句是正确的:CREATETRIGGERupdatepriceBEFOREinsertONconsumeinfoFOREACHROWBEGINsetnew.金额=0;END;在after中:new赋值已经结束,只能读取内容如,以下语句是错误的:CEATETRIGGERupdatepriceAFTERinsertONconsumeinfoFOREACHROWBEGINsetnew.金额=0;END;15new与old总结归纳:new可在before触发器中赋值、取值可在after触发器中取值o

8、ld只能用于取值,因为赋值没意义INSERT语句,只有new合法DELETE语句,只有old才合法UPDATE语句,可以同时使用new和old16课程练习2创建触发器:upd_check功能作用:修改Account表中的记录的amount字段时,作如下检查:如果修改后的值大于100,则值为100如果修改后的值小于0,则值为0如果修改后的值为旧值2倍以上,则值为旧值2倍17建表脚本CREATEDATA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。