触发器 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 ;
那么,本篇博文的知识点在这里就讲解完毕了。
(请观看本人博文 —— 《数据库 —— 专栏总集篇》)