MySQL触发器详解

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL触发器相关知识。

一、触发器简介

触发器是一种特殊的存储过程,在定义触发器时会定义触发器的触发条件,使得触发器在满足触发条件时自动执行而不需要认为调用。尽管触发器的原理很简单,但是在MySQL中引入并使用触发器,可以实现很多实用的效果,并满足一些特定业务环境的需要。
触发器的作用主要有以下几点:
1、增强数据库的安全性。
可以实现对用户操作数据库的限制,比如不允许用户下班时间修改数据,不允许用户对某些数据更改超过一定的幅度和范围等等。
2、实现数据库操作的审计。
利用MySQL触发器,可以跟踪用户对数据库的操作,把用户执行的一些操作自动写入审计库。
3、定义数据表的一些复杂规则。
触发器可以实现非标准的数据完整性检查和约束,因此,触发器可以实现比规则更加复杂的限制。
4、实现复杂的级联操作。
尽管我们利用外键,可以实现相关的级联操作,但是,利用触发器,我们可以实现更加复杂的级联操作。
5、自动计算数值。
利用触发器,可以监控数据库中某些敏感值,例如,如果当前公司账目上可用资金少于100万元,则立即给公司老板告警等等。

二、触发器定义

触发器定义语法如下:

create trigger 【触发器名称】 【触发时机(before|after)】 【触发动作(delete|update|insert)on 【数据库表名】 for each row 
begin
【触发后执行事件】
end

在上述语法中,触发器名称可以自行定义,触发时机只可以选择bofore和after,before在触发动作之前执行,after在触发动作之后执行。触发后如果只有简单的一行SQL命令,则不需要加begin和end关键字,但是如果有多行命令,则需要添加相应的关键字。
此外,与MySQL存储过程类似,MySQL触发器也需要使用delimiter来修改MySQL数据库的默认分号结束符。

三、触发器示例

下面,我来创建一个简单的触发器,作用是当我们向student表中添加学生后,自动向logs表中记录刚才的添加操作,下面我们实际创建该触发器,并观察其效果。
创建触发器SQL命令如下:

create trigger student_add after insert on student for each row 
insert into logs select now(*),concat(id,'-',name) from student where id=(select max(id) from student );//

然后,我们向student表中插入学生数据,并观察效果如下:
在这里插入图片描述
显然,我们的触发器当向student表中添加数据时生效,并且达到了我们与其的效果。

四、触发器查看与删除

最后,我们来简单将以下触发器的查看和删除相关命令。
1、查看指定触发器
执行命令:

show create trigger 【触发器名】\G

可以查看指定的触发器。
上述命令执行结果如下:
在这里插入图片描述
2、查看所有触发器
执行命令:

show triggers\G

可以查看所有的触发器,执行结果如下:
在这里插入图片描述
3、删除触发器
执行命令

drop trigger 【触发器名】;

可以删除指定的触发器。执行效果如下:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远是少年啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值