网站大量收购独家精品文档,联系QQ:2885784924

《MySQL数据库应用与管理项目化教程》课件_项目八-1 触发器.pptx

《MySQL数据库应用与管理项目化教程》课件_项目八-1 触发器.pptx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

项目八触发器

任务目标任务一创建触发器任务二应用触发器任务三 查看触发器任务四 删除触发器

教学目标能力目标◎能熟练查看触发器信息,按需建立和修改触发器;◎能应用触发器解决复杂的业务逻辑关联。知识目标◎了解触发器的用途和类型,熟悉触发器创建语法;◎掌握触发器中的NEW和OLD的应用。学习重点◎掌握触发器的查看、建立和测试;◎掌握NEW和OLD的应用。学习难点◎触发器的级联触发与测试。

任务一创建触发器

创建触发器主要内容:触发器作用创建触发器测试触发器重点难点:触发器应用;

触发器作用引入:商品销售会使商品销售量增加,而库存量必须相应地减少相同数量,通常为了实现这样的强制业务规则和数据完整性,我们把这种业务规则编写成触发器,通过触发器来实现复杂的业务规则的触发动作。

触发器触发器是一种与数据表紧密结合的特殊的存储过程,用于保护表中的数据。当该数据表有插入、更改或删除事件发生时,所设置的相应触发器的触发操作也会自动执行。检查数据变动的一致性:在销售图书时,为保证图书资料表和销售销售表的图书信息变动一致,可通过建立一个销售销售表上建立UPDATE和INSERT触发器,可以使用关键字old和new来引用触发器中发生变化的记录内容。

创建触发器查阅语法:官网文档:/doc/refman/8.0/en/create-trigger.html语法:CREATETRIGGERtrigger_name{BEFORE|AFTER}{INSERT|UPDATE|DELETE}ONtbl_nameFOREACHROW[{FOLLOWS|PRECEDES}other_trigger_name]trigger_body

创建触发器关键字:NEW和OLD触发器中使用的NEW和OLD,用来表示触发器的所在表中,触发了触发器的那一行数据。使用方法:NEW.col_nameOLD.col_nameOLD是只读的,而NEW则可以在触发器中使用SET赋值,这样不会再次触发触发器,造成循环调用。INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;

AFTER触发器应用例1:建立一个item表的插入触发器mysqlDROPTRIGGERIFEXISTStg_goods_ins;mysqldelimiter//mysqlCREATETRIGGERtg_goods_ins AFTERINSERTONitem FOREACHROW BEGIN UPDATEgoods SETamount=amount-NEW.quantity WHEREid=NEW.goods_id;END//mysqldelimiter;mysqlSELECT*FROMitem;mysqlINSERTINTOitem(order_id,goods_id,supplier_id,quantity)VALUES(2,2,1,10);#测试插入触发器mysqlSELECT*FROMitem;mysqlSELECT*FROMgoods;

AFTER触发器应用例2:建立一个item表的修改触发器mysqlDROPTRIGGERIFEXISTStg_goods_mod;mysqldelimiter//mysqlCREATETRIGGERtg_goods_mod AFTERUPDATEONitemFOREACHROWBEGINUPDATEgoodsSETamount=amount+(old.quantity-NEW.quantity)WHEREgoods_id=NEW.goods_id;END//mysqldelimiter;mysqlUPDATEitemSETquantity=quantity-5#测试修改触发器WHEREitem_id=6;mysqlSELECT*FROMitem;mysqlSELECT*FROMgoods;

AFTER触发器应用例3:建立一个item表的删除触发器mysqlDROPTRIGGERIFEXISTStg_goods_del;mysqldelimiter//mysqlCREATETRIGGE

文档评论(0)

酱酱 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档