【数据库】触发器 Trigger

触发器 Trigger

概念

数据库中的一个对象,相当于JS中的监听器
触发器可以监听 增删改 三个动作


比如说我想监听一张表,只要我增删改了这张表中的数据,我就可以触发这个触发器,去往另外一张表中记录一下日志

语法

DELIMITER $$

CREATE
    TRIGGER `数据库名`.`触发器名` BEFORE/AFTER INSERT/UPDATE/DELETE
    ON `数据库名`.`要监听的表名`
    FOR EACH ROW    --行级触发:针对单行监听
    BEGIN
        触发后要执行的代码块;
    END$$

DELIMITER ;

那么,现在本人来解释下上面的语法:

  • BEFORE
    行为发生之前就触发
  • AFTER
    行为发生之后触发
  • FOR EACH ROW
    行级触发,每操作一行就触发

例如:

DELIMITER $$

CREATE TRIGGER `mytestdb`.`MyTri3` AFTER DELETE ON test FOR EACH ROW 
    BEGIN
        INSERT INTO logger VALUES(NULL,"你删除了一条数据",NOW());
    END$$

DELIMITER ;

触发器中有两个十分重要的对象 —— old和new
定义

  • old.字段:
    可以获取到被监听的表中的字段的旧值
  • new.字段:
    可以获取到被监听表中更新后的字段的新值

例如:
修改一张表t1中的数据,
另一张表t2中的数据也要修改

DELIMITER $$
CREATE
    TRIGGER `mytestdb`.`MyTri7` AFTER UPDATE ON `mytestdb`.`t1`
    FOR EACH ROW 
    BEGIN
        UPDATE t2 SET id=new.id,username=new.username,age=new.age WHERE id=old.id;
    END$$
DELIMITER ;

那么,本篇博文的知识点在这里就讲解完毕了。
(请观看本人博文 —— 《数据库 —— 专栏总集篇》)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 变量Mysql本质是一种编程语言,需要很多变量来保存数据。Mysql中很多的属性控制都是通过mysql中固有的变量...
    4F4C阅读 2,994评论 0 0
  • 回顾 字段类型(列类型):数值型,时间日期型和字符串类型 数值型:整型和小数型(浮点型和定点型) 时间日期型:da...
    翊溪阅读 4,536评论 0 0
  • 一、 left join, right join, inner join区别? left join(左联接) 返回...
    小拳头酱阅读 4,125评论 0 3
  • 一、事务(transaction) 事务就是一组有着内在逻辑联系的sql命令。 1.事务安全 一种保护连续操作同时...
    咸鱼有梦想呀阅读 3,229评论 0 1
  • Mysql 快速指南 本文的示例在 Mysql 5.7 下都可以测试通过。 知识点 概念 SQL 基础 增删改查 ...
    静默虚空阅读 4,035评论 0 2