版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章
触发器本章概述MySQL的触发器和存储过程一样,都是嵌入MySQL的一段程序。触发器是由事件来触发某个操作的,这些事件包括INSERT、UPDATAE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。本章学习目标了解什么是触发器;掌握创建、查看、删除触发器的方法;掌握触发器的使用技巧;熟练掌握综合使用触发器的方法和技巧。目录01020304触发器的使用查看触发器删除触发器创建触发器05触发器综合示例06本章小结创建触发器触发器是一个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。比如当对tb_fruits表进行操作(INSERT、DELETE或UPDATE)时就会激活它执行。创建只有一个执行语句的触发器创建触发器创建一个触发器的语法如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtbl_nameFOREACHROWtrigger_stmt其中,trigger_name表示触发器名称,用户自行指定;trigger_time表示触发时机,可以指定为before或after;trigger_event表示触发事件,包括INSERT、UPDATE和DELETE;tbl_name表示建立触发器的表名,即在哪张表上建立触发器;trigger_stmt是触发器执行语句。创建只有一个执行语句的触发器创建触发器【例12-1】创建一个单执行语句的触发器,代码如下:CREATETABLEtb_account(acct_numINT,amountDECIMAL(10,2));CREATETRIGGERins_sumBEFOREINSERTONtb_accountFOREACHROWSET@sum=@sum+NEW.amount;代码执行结果如图所示。创建只有一个执行语句的触发器创建触发器创建多个执行语句的触发器,语法格式如下:CREATETRIGGERtrigger_nametrigger_timetrigger_eventONtbl_nameFOREACHROWBEGIN语句执行列表END其中,trigger_name表示触发器的名称,用户自行指定;trigger_time表示触发时机,可以指定为before或after;trigger_event表示触发事件,包括INSERT、UPDATE和DELETE;tbl_name表示建立触发器的表名,即在哪张表上建立触发器;触发器程序可以使用BEGIN和END作为开始和结束,中间包含多条语句。创建有多个执行语句的触发器目录触发器的使用查看触发器删除触发器创建触发器触发器综合示例本章小结010203040506查看触发器信息通过SHOWTRIGGERS语句查看触发器信息的语句如下:SHOWTRIGGERS;查看触发器查看触发器在MySQL中,所有触发器的定义都存在于INFORMATION_SCHEMA数据库的TRIGGERS表格中,可以通过查询命令SELECT来查看,具体的语法如下:SELECT*FROMINFORMATION_SCHEMA.TRIGGERSWHEREcondition;查看触发器目录触发器的使用查看触发器删除触发器创建触发器触发器综合示例本章小结010405060302触发器的使用触发程序与表相关,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将触发程序设置为在执行语句之前或之后激活。例如,可以在从表中删除每一行之前,或在更新每一行之后激活触发程序。目录触发器的使用查看触发器删除触发器创建触发器触发器综合示例本章小结010506020403删除触发器使用DROPTRIGGER语句可以删除MySQL中已经定义的触发器,删除触发器的基本语法格式如下:DROPTRIGGER[schema_name.]trigger_name其中,schema_name表示数据库名称,是可选的,如果省略了schema,那么将从当前数据库中舍弃触发程序;trigger_name是要删除的触发器的名称。删除触发器目录触发器的使用查看触发器删除触发器创建触发器触发器综合示例本章小结010602030504触发器综合示例创建触发器的实例,每更新一次tb_persons表的num字段后,都要更新tb_sales表对应的sum字段。字段名数据类型主键外键非空唯一自增namevarchar(40)否否是否否numint(11)否否是否否字段名数据类型主键外键非空唯一自增namevarchar(40)否否是否否sumint(11)否否是否否触发器综合示例(1)创建一个业务统计表tb_persons,代码如下:CREATETABLEtb_persons(nameVARCHAR(40),numint);(2)创建一个销售额表tb_sales,代码如下:CREATETABLEtb_sales(nameVARCHAR(40),sumINT);(3)创建一个触发器。创建一个触发器,在更新过tb_persons表的num字段后,更新tb_sales表的sum字段,代码如下:CREATETRIGGERnum_sumAFTERINSERTONtb_personsFOREACHROWINSERTINTOtb_salesVALUES(NEW.name,7*NEW.num);向tb_persons表中插入记录。插入新的记录后,更新销售额表。INSERTINTOtb_personsVALUES('xiaoxiao',20),('xiaohua',69);执行查询如下:SELECT*FROMtb_persons;SELECT*FROMtb_sales;目录触发器的使用查看触发器删除触发器创建触发器触发器综合示例本章小结010203040605本章小结MySQL的触发器和存储过程一样,都是嵌入MySQL的一段程序。触发器是由事件来触发某个操作的,这些事件包括INSERT、UPDATAE和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该触发器对象。本章首先详细介绍了触发器的创建,包括单执行语句
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢性肾病高钾血症管理
- 《GB-T 8569-2009固体化学肥料包装》专题研究报告
- 《GBT 30924.1-2016 塑料 乙烯 - 乙酸乙烯酯(EVAC)模塑和挤出材料 第 1 部分:命名系统和分类基础》专题研究报告
- 汽车消费贷款抵押担保合同
- 中式卤味制作技师(初级)考试试卷及答案
- 主持人岗位招聘考试试卷及答案
- 2025年壬基酚聚氧乙烯醚合作协议书
- 经常口腔溃疡的饮食防治
- 胆囊炎的饮食指导
- 员工离职管理培训课件
- 2025中原农业保险股份有限公司招聘67人备考考试试题及答案解析
- 2025年度河北省机关事业单位技术工人晋升高级工考试练习题附正确答案
- 交通运输布局及其对区域发展的影响课时教案
- 2025年中医院护理核心制度理论知识考核试题及答案
- GB/T 17981-2025空气调节系统经济运行
- 比亚迪储能项目介绍
- 2025年9月广东深圳市福田区事业单位选聘博士11人备考题库附答案
- 糖尿病足溃疡VSD治疗创面氧自由基清除方案
- 《公司治理》期末考试复习题库(含答案)
- 自由职业者项目合作合同协议2025年
- 学堂在线 大数据与城市规划 期末考试答案
评论
0/150
提交评论