川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

Mysql中触发器使用详解

作者:川石学院 日期:2021-06-28 15:42:36 点击数:

  什么是触发器?软件测试工程师应该都知道,触发器是与表有关的数据库对象,在对表进行insert/update/delete之前或之后,会触发并执行触发器中定义的SQL语句。触发器的这种特性可以协助应用在数据库端确保数据的完整性,记录日志,校验数据等。

Mysql中触发器使用详解(图1)

  一、触发器创建语法

  •   CREATE tirgger trigger_name

  •   before/after insert/update/delete on table_name

  •   for each row

  •   begin

  •   tigger stmt;

  •   end;

  •   trigger_name:命名时最好使用table_time_event方式命令。

  •   Table及表名,time有before、after,event有insert、update、delete, FOR EACH ROW

       表示任何一条记录上的操作满足触发事件都会触发该触发器,也就是说触发器的触发频率是针对每一行数据触发一次.

  二、如何查看触发器

  查看数据库里有哪些触发器:

  Show triggers;

  查看某个触发器的内容:

  SHOW CREATE TRIGGER trigger_name;

  然后把SQL Original Statement列的内容复制粘贴出来即可。

  删除触发器:

  Drop trigger trigger_name;Ø 修改触发器:

  无,先删除,再新建。

Mysql中触发器使用详解(图2)

   三、NEW和OLD的使用

  MySQL 中定义了 NEW 和 OLD加列名,用来表示触发器所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容我们可以使用它们来获取被修改的对象和修改后的对象。  

Mysql中触发器使用详解(图3)

  在INSERT型触发器中,NEW用来表示将要(BEFORE)或已经(AFTER)插入的新数据;

  在UPDATE型触发器中,OLD用来表示将要或已经被修改的原数据,NEW用来表示将要或已经修改为的新数据;

  在DELETE型触发器中,OLD用来表示将要或已经被删除的原数据;

  另外,OLD是只读的,而NEW则可以在触发器中使用 SET 赋值,这样不会再次触发

  触发器,造成循环调用

  四、触发器实例

  实例1:给student表插入数据后记录其操作记录。

  •   create trigger student_after_insert after insert on student

  •   for each row

  •   begin

  •   insert into student_history(userid,action,optime)

  •   values(NEW.sno,'insert',now());

  •   end  

Mysql中触发器使用详解(图4)

  实例2:删除学生表数据后同时删除成绩表中对应学生的成绩信息,保持了数据的完整性,一致性。

  •   create trigger student_after_delte AFTER DELETE on student

  •   for each row

  •   begin

  •   DELETE from sc where sc.sno=old.sno;

  •   end

  实例3:修改成绩表成绩,如果修改成了负数则将其改为0,如果成绩大于100,则修改成

  •       100 create trigger sc_before_update before update on sc

  •   for each row

  •   begin

  •   if new.score<0 then

  •   set new.score=0;

  •   elseif new.score>100 then

  •   set new.score=100;

  •   end if;

  •   end

  本章节主要介绍了“Mysql中触发器使用详解”的内容,大家觉得有用的话记得每天来这里和小编一起学习涨薪技能。

  给大家推荐一个软件测试自学群,识别下方二维码,免费领取学习课件、视频哦。

Mysql中触发器使用详解(图5)

  附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。  

Mysql中触发器使用详解(图6)


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-06-28 15:42:36
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-06-28 15:42:36
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-06-28 15:42:36
  • 建筑工程专业朱同学成功转行为软件测试人!2021-06-28 15:42:36
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-06-28 15:42:36
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-06-28 15:42:36
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-06-28 15:42:36
  • 文科生转行软件测试照样拿下高薪15K!2021-06-28 15:42:36
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-06-28 15:42:36
  • 毕业1年,迷茫的他最终选择转行软件测试2021-06-28 15:42:36