• mysql触发器 学习


    1.       说明:

    触发器的定义就是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好的了。这里面需要说明一下,触发器可以分为语句级触发器和行级触发器。简单的说就是语句级的触发器可以在某些语句执行前或执行后被触发。而行级触发器则是在定义的了触发的表中的行数据改变时就会被触发一次。

    2.       触发器作用:

    安全性;审计;实现复杂的数据完整性规则;实现复杂的非标准的数据库相关完整性规则;同步实时地复制表中的数据

    3.       语法结构:

    create trigger trigger_name (BEFORE|AFTER) (delete|update|insert) on table_name

    for each row

    BEGIN

    要触发的sql语句;

    END;;

    4.       例子1:

    DELIMITER ;;    定义sql命令结束符

    /*

    drop trigger D1;;  删除触发器

    drop trigger D1;;

    */

    create  trigger D1 BEFORE delete on employee

    for each row      表示行级触发器

    BEGIN

    insert into tg_employee_log set name=old.name,name_id=old.employee_id,action='delete';

    update tg_assets_info set as_status='2',user=205 where user=old.employee_id;

    END;;                 

    表示在删除employee里的数据之前,在tg_employee_log表里面插入一条数据,并且更新tg_assets表的数据。

    注意:这里用到的old.employee_id,表示删除之前的数据。

    5.       例子2:

    create  trigger D2 AFTER insert on employee

    for each row

    BEGIN

    insert into tg_employee_log set name=new.name,name_id=new.employee_id,action='add';

    END;;

    表示在employee插入之后,在tg_employee_log表里插入一条数据。

    注意:这里用到了new.employee_id,表示插入之后产生的新数据。

    DELIMITER ;

    create trigger trigger_name (BEFOFE|AFTER) (delete|update|insert) on table_name
    
    for each row
    
    BEGIN
    
    要解发的sql语句
    
    END;;
    
    
    
    
    
    
    
    CREATE TRIGGER `tb_trigger_insert` AFTER INSERT ON `tb_trigger`
    
    FOR EACH
    
    ROW INSERT INTO `tb_trigger_log` SET `action` = 'insert',`actionid` = new.id;
    
    
    
    
    CREATE TRIGGER `delete_tb_sys_template_source` BEFORE DELETE ON `tb_sys_template`
    FOR EACH ROW
    DELETE FROM `tb_sys_template_source` WHERE `templateid`=old.id;
    
    
    
    CREATE TRIGGER `delete_tb_sys_template_source` BEFORE DELETE ON `tb_sys_template` 
    FOR EACH ROW 
    DELETE FROM `tb_sys_template_source` WHERE `templateid` = old.id;
    

      

  • 相关阅读:
    摆动排序 II
    二进制中1的个数
    n的幂
    丢掉的数字
    phpcms直接取子栏目的内容、调用点击量的方法
    phpcms导航栏当前栏目选中方法
    PHP中的全局变量global和$GLOBALS的区别
    phpcms添加子栏目后的读取
    phpcms取内容发布管理中的来源
    cms替换主页
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/3251715.html
Copyright © 2020-2023  润新知