原创13【触发器】
风向西瓜阅读量 41
上一篇:12【事务的隔离级别】
下一篇:14【视图】
文章目录
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
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。
标签: 13【触发器】
0/300
全部评论0