• MySQL触发器


    一.基本简介
    监视数据表的增删改,并触发指定操作.
    1.mysql的触发器不能作用于列,只能作用于表.
    2.不能在一个表中定义两个相同的动作,比如两个一样的 before insert

    二.语法
    CREATE DEFINER=`root`@`localhost` TRIGGER 触发器名称
    AFTER/BEFORE
    INSERT/UPDATE/DELETE
    ON 表名
    FOR EACH ROW
    BEGIN
    SQL语句
    END;

    基本解释:
    DEFINER=`root`@`localhost` 指定权限
    使用NEW.col来获取新的列的值,一般用于update和insert
    使用OLD.col来获取旧列的值,一般用于update和delete
    在innodb表上的触发器,是事务级的,如果触发sql语句返回错误,则对应update/insert/delete 不会执行
    在myisam表上的触发器,触发sql语句失败,记录仍然会被更新

    三.示例

    DELIMITER // #修改定界符
    CREATE TRIGGER delete_test5 AFTER DELETE ON test2
    FOR EACH ROW
    BEGIN
    DELETE FROM test5 WHERE `name`=OLD.id;
    END;
    //

    在插入前更新字段:

    CREATE DEFINER=`root`@`localhost` TRIGGER `update_floor` BEFORE INSERT ON `yx_quick_comment` FOR EACH ROW BEGIN
    SELECT `floor` INTO @last_floor FROM comment WHERE qid=NEW.qid;
    IF @last_floor IS NULL THEN
    SET NEW.floor=1;
    ELSE
    SET NEW.floor=@last_floor+1;
    END IF;
    END


    四.查看当前数据库触发器
    SHOW TRIGGERS;
    SHOW CREATE TRIGGER table_name.`insert`; #查看table_name触发器insert的建立语句


    五.删除触发器
    DROP TRIGGER table_name.`insert`; #删除table_name中insert的触发器

  • 相关阅读:
    集合(set)
    字典方法
    字典(dict)
    元组(tuple)
    列表方法
    xxxx(四):接受消息hook地址分析
    xxxx(三)“黑吃黑”: 破解别人外挂
    UDP内网穿透和打洞原理与代码实现
    VMP加壳(三):VMP壳爆破实战-破解某编辑类软件
    VMP加壳(二):VMP的虚拟化原理
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6884327.html
Copyright © 2020-2023  润新知