美文网首页
Mysql触发器语法与项目中的一次使用

Mysql触发器语法与项目中的一次使用

作者: whoszus | 来源:发表于2017-06-07 16:14 被阅读0次

    Mysql触发器语法与项目中的一次使用

    • 触发器简介 : 触发器(Trigger)是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件触发。

    触发器经常用于加强数据的完整性约束和业务规则等。

    • 本次新建触发器背景:有两个数据表 A|B,A是在另外的系统中同步过来的,表中数据每3分钟会在更新一次。B是在本系统内使用的,由前端调用接口将A表中某一条数据导入到B表中。那么,在此时刻之后,A表中如数据有更新,AB两表数据便不一致了。数据以A表为准,所以,使用触发器是一个方案。下面展示如何新建这一个触发器。

    • 触发器语法
    
    -- 1. 新建触发器
    
    CREATE TRIGGER 触发器名称 BEFORE|AFTER 触发事件
    
    ON 表名 FOR EACH ROW
    
    BEGIN
    
    触发器程序体
    
    END
    
    -- {BEFORE|AFTER} 触发器触发的时机
    
    -- {INSERT|UPDATE|DELETE} 触发器事件
    
    -- FOR EACH ROW 子句通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
    
    --  (针对insert和delete语句,每一行都触发)
    
    --2. 查看触发器
    
    show triggers\G
    
    -- 3. 删除
    
    drop trigger 触发器名称
    
    
    • 触发器中 new && old
    
    针对update操作,new表示的是更新后的值,old表示的是原来的数据。
    
    针对insert操作,new表示的是插入的值。
    
    针对delete操作,old表示的是删除后的值。
    
    

    • 示例
    
    DELIMITER ;;
    
    CREATE TRIGGER `case_update_to_case2` AFTER UPDATE ON `jz_case_detail` FOR EACH ROW BEGIN
    
    UPDATE case2_baseinfo SET lasj = new.SL_LRSJ ,belongTo = new.DEPARTMENTCODE, caseName= new.AJMC,caseClass=new.AJLX,case_status = new.AJSTATE,masterSN = new.AJZBRY,masterName=new.RESERVATION01,assist_masterSN=new.AJXBRY,assist_masterName=new.RESERVATION02,introduction=new.ZYAQ where caseID = new.AJBH;
    
    END
    
    ;;
    
    DELIMITER ;
    
    

    相关文章

      网友评论

          本文标题:Mysql触发器语法与项目中的一次使用

          本文链接:https://www.haomeiwen.com/subject/vvcafxtx.html