MySQL之触发器

二:触发器

1. 什么是触发器

触发器,是一段与某个表相关的sql语句,会在某个时间点,满足某个条件后自动触发执行

其中两个关键因素:

  • 时间点
    * 事件发生前,before|事件发生后 after

  • 事件
    * update delete insert

在触发器包含两个对象:

​ old:update,delete中可用

​ new:update,insert 中可用

2. 什么时候使用触发器

场景1:当表的数据被修改时,自动记录一些数据,执行一些sql语句

3. 创建触发器
# 语法
CREATE TRIGGER t_name t_time t_event ON table_name FOR EACH ROW
begin
stmts.....(一堆sql语句)
end

# 需求:有cmd表和错误日志表,在cmd执行失败时自动将信息存储到错误日志表中
# 当插入cmd表的时候,如果执行状态时,失败的,那么将信息插入到errlog中

#准备数据
CREATE TABLE cmd (
    id INT PRIMARY KEY auto_increment,
    USER CHAR (32),
    priv CHAR (10),
    cmd CHAR (64),
    sub_time datetime, #提交时间
    success enum ('yes', 'no') #0代表执行失败
);
#错误日志表
CREATE TABLE errlog (
    id INT PRIMARY KEY auto_increment,
    err_cmd CHAR (64),
    err_time datetime
);

after insert之后?

delimiter //
create trigger cmd_insert after insert on cmd for each row
begin
if new.success = "no" then
	insert into errlog values(null,new.cmd,new.sub_time);
end if;
end //
delimiter;
4. 删除触发器
drop trigger cmd_insert;
5. 查看触发器
show triggers;

show create trigger 触发器名称
posted @ 2019-07-16 14:54  Hello_Jack  阅读(281)  评论(0编辑  收藏  举报
# 页脚html代码 /*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }