c语言 mysql触发器_MySql-触发器操作

本文介绍了MySQL触发器的概念,包括触发器的定义、支持的时间点和事件,以及如何创建、查看和删除触发器。通过一个具体的示例,展示了如何在`cmd`表上创建一个名为`insert_t`的触发器,当新插入的数据`success`字段为'no'时,将该命令记录到`errlog`错误日志表中。
摘要由CSDN通过智能技术生成

触发器

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

支持的时间点:时间发生前before和发生后after

支持的事件:

update 可用OLD访问旧数据,NEW访问新数据

delete 可用OLD访问新数据

insert 可用NEW访问新数据

可以将NEW和OLD看做一个对象,其中封装了这列数据的所有字段

创建触发器

delimiter // 重定义行结束符

create trigger t_name t_time t_event on table_name for each row

begin

sql语句

end//

delimiter ;

# delimiter 用于修改默认的行结束符,由于在触发器中有多条sql语句,他们需要使用分号来结束,但是触发器是一个整体,所以需要先更换默认的行结束符

# t_name 触发器名

# t_time 时间点 before|after

# t_event 事件 delete|update|insert

# table_name 表名

查看触发器

show triggers; # 查看所有触发器

show create trigger 触发器名; # 查看创建指定的触发器语句

删除触发器

drop trigger 触发器名;

举例

#准备数据

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

);

# 创建触发器

delimiter //

create trigger insert_t after insert on cmd for each row

begin

if new.success = 'no' then

insert into errlog(err_cmd,err_time) values(new.cmd,new.sub_time);

end if;

end//

delimiter ;

show triggers; # 查看所有的触发器

show create trigger insert_t; # 查看创建触发器insert_t的语句

drop trigger insert_t; # 删除触发器insert_t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值