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的触发器

  • 相关阅读:
    关于CDH集群spark的三种安装方式简述
    CDH高可用hadoop集群性能配置
    CDH集群的时间同步--简要配置要求
    CDH集群的配置优化须知
    MySQL在Linux系统环境的安装和无主机登录配置
    配置文件my.cnf---配置信息注释大全
    Scrapy项目
    Scrapy项目
    Scrapy项目
    Scrapy项目
  • 原文地址:https://www.cnblogs.com/itfenqing/p/6884327.html
Copyright © 2011-2022 走看看