【数据库】触发器 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 ;

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

你可能感兴趣的:(【数据库】触发器 Trigger)