上一篇: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 触发器使用
create trigger trigger_name [after/before] [insert/update/delete]
on table_name
for each row
begin
......
end;
**after:**在插入表之后执行
**before:**在插入表之前执行(两种触发器效果一致)
建立一张日志表,存储日志
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触发器
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触发器
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触发器
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; -- 查看日志表
- 查看当前数据库中的触发器
show triggers;
- 删除触发器
drop trigger trigger_name;
-- 示例
drop trigger test1;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131698.html