原创13【触发器】

风向西瓜阅读量 41

上一篇12【事务的隔离级别】

下一篇14【视图】

目录【MySQL零基础系列教程】



文章目录



13.1 触发器

13.1.1 触发器介绍

触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。

  • MySQL中触发器共有3种:
触发器类型 NEW和OLD的使用
insert触发器 NEW 表示将要或者已经新增的数据
update触发器 OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数据
delete触发器 OLD 表示将要或者已经删除的数据

使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容

13.1.2 触发器使用

prism language-sql 复制代码
create trigger trigger_name [after/before] [insert/update/delete] 
on table_name
for each row
begin
	......
end;

**after:**在插入表之后执行

**before:**在插入表之前执行(两种触发器效果一致)

建立一张日志表,存储日志

prism language-sql 复制代码
CREATE TABLE log  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `message` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `time` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB ;
  • insert触发器
prism language-sql 复制代码
create trigger test1 after insert
on student
for each row
begin
	insert into log values(null,new.name,now());
end;

insert into student values(6,'王八',3);

select * from log;  -- 查看日志表
  • update触发器
prism language-sql 复制代码
create trigger test2 after update
on student
 for each row
begin
	insert into log values(null,concat('之前的值: ',old.name,';之后的值: ',new.name),now());
end;


update student set name='王巴' where id=6; 

select * from log;  -- 查看日志表
  • delete触发器
prism language-sql 复制代码
create trigger test3 after delete
on student
 for each row
begin
	insert into log values(null,concat('删除的值: ',old.name),now());
end;

delete from student where id=6;
select * from log;  -- 查看日志表
  • 查看当前数据库中的触发器
prism language-shell 复制代码
show triggers;
  • 删除触发器
prism language-sql 复制代码
drop trigger trigger_name;

-- 示例
drop trigger test1;
复制代码
     ===========================
    【来源: CSDN】
    【作者: 緑水長流*z】
    【原文链接】 https://coder1024.blog.csdn.net/article/details/126569767
    声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。
0/300
全部评论0
0/300