老韩讲mysql触发器,很强大也很简单

陆陆续续讲了表、用户、权限、各种SQL语句、存储过程,今天老韩来讲一下触发器,老韩从触发器的概念、分类、创建、案例来对它进行一个讲解,希望读者朋友可以有所收获。一、概念;简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行;特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行;作用:保证数据的完整性,起到约束的作用;二、触发器分类;触发器大致分为表级触发器和行级触发器,很好理解,表级触发器表示目标是表,针对表的修改只会触发执行一次事件,行级触发器对象是行,每有一行数据变动就会执行一次事件,举个例子,老韩在student表上做一个表级触发器,插入了一个老韩同学的信息,那么触发器中的语句就执行一次,老韩把触发器改成了行级触发器,老韩一次插入了老韩同学和老朗同学的信息,那么触发器中语句就执行两次,所以在创建触发器的时候一定要根据业务,选择正确的触发器。三、如何创建触发器;CREATETRIGGER触发器名BEFORE

AFTER触发事件ON表名FOREACHROWBEGIN执行语句列表END命令解释:CREATETRIGGER为标准写法,before、after表示事件和sql语句先后执行的顺序,before表示在sql语句执行前执行语句,after表示在sql语句执行后执行语句,on表名表示作用对象,意思是在对哪个表操作时候会执行这个触发器,foreachrow可加可不加,不加就是表级触发器,加的话就是行级触发器,触发事件是dml操作,这个事件有三种,insert、delete、update,表示在对对象执行哪些操作时候才会触发这个触发器,所以一个对象最多有6种触发器,上面的before、after和下面的三个事件组合。四、案例举证;老韩有这样一个需求,我要管理所有的设备,设备入库状态是正常使用,设备入库之后我可能会走报废流程,走完报废流程这个设备的状态自动更改为报废,这个需求如何实现呢?老韩来分析一下,首先要有一个台账表,记录设备信息,每一台设备都有设备编号,这个设备编号作为主键,走设备维护申请单的时候也要填写设备的信息,只需要填写设备编号即可,别的信息自动带出,流程走完数据库中设备维护申请单这个表中有一条新数据时候就会执行修改同设备编号的设备状态,设备表和报废表我就不设计了,我只讲方法,具体如何做一定要自己做,触发器如下图所示:如上图所示,上图中有一点需要讲一下,图中有一个new,表示是触发该触发器语句数据,我称它为伪表,伪表是oracle中的叫法,表示临时表,有读者朋友就会想,有new有没有old呢?是有的,当事件为insert的时候有通过new获取插入的数据,只有new,当事件为update的时候,既有new也有old,new表示更新后的数据,old表示更新前的数据,delete中只有old。其实这个new关键字类似于j2ee中要接触的一个很重要的概念,那就是上下文,后面我们再接触,有个印象。触发器在工作中会经常用到,老韩之前也说过,一个好的DBA顶的上半个开发。今天的分享就到这里,没有


转载请注明:http://www.aierlanlan.com/cyrz/6711.html