zoukankan      html  css  js  c++  java
  • 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的触发器

  • 相关阅读:
    asp.net 页面定时跳转的小技巧
    获得 Windows phone 设备的信息
    如何自定义ToggleSwitch控件样式(转)
    云推送注意(MSDN链接)
    回顾:线程和进程的区别
    WebGL
    13种提升基于MVVM模式的WP7程序性能的方法(转)
    sample_code
    网址收藏
    Net中de日期格式
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6884327.html
Copyright © 2011-2022 走看看