概述
今天我们再来学习MySQL数据库中一个重要的知识点,触发器
触发器
第一步,我们先来认识一下这个触发器是什么东西,废话不多说,直接百度百科
可以看到有很大一段话,我建议大家多读几遍,这里呢,我用红线去画住重点,触发器就相当于我们的闹钟一样,每当到了早上的八点或者八点半准时叫我们起床。其中触发的事件就是时间,好比现在到了早上的8:00了,然后闹钟就响了。
读完之后,我们呢来看看这个触发器如何创建、调用、查看、删除。
创建触发器
创建单个执行语句触发器
创建触发器,我们需要用到一个关键词:TRIGGER,下面是完整命令:
CREATE TRIGGER 触发器名称 BEFORE(之前) | AFTER(之后) 触发事件
ON 表名 FOR EACH ROW 执行语句;
嗯,大概就这样,我来解释一下,创建一个TRIGGER,名字叫xxx,bffore就是在这个触发事件之前,做什么什么操作,after就是之后,触发事件呢有三种,insert、update、delete,on后面跟着的是作用的表,FOR EACH ROW 就是作用到每一行,再往后就是具体执行什么语句了。
我们现在来弄一个这个触发器,大家感受一下。
我们再创建一个表,叫 t_log 日志表,用来存放日志的,然后弄一个id,一个content,一个日期就可以了。
create table t_log(
id int not null PRIMARY key AUTO_INCREMENT,
content varchar(50) not null,
createDt datetime
)engine= INNODB charset = utf8
创建好之后,我们来开始弄触发器。
CREATE TRIGGER wirte_log_insert_student after insert on t_student
FOR EACH ROW insert into t_log values(null, CONCAT('刚刚新增加了一个',new.name,'的学生'), NOW());
我来给大家解释一下这个命令,前面的我已经说了,就不说了,主要的是后面的这个insert into t_log
首先是这个CONCAT函数,这个函数是用来做字符串拼接的,可以使用逗号隔开,能填好多好多,但是不要超过了这个content的大小,我们给的是50个字。
然后就是这个new.name,这个是一个过度变量
过度变量
过度变量有两个一个是NEW,一个是OLD。
NEW呢就是用在INSERT这种触发事件,这里的NEW就是指代的我们刚刚新插入的这个表的其中一行数据,我们可以通过NEW.表中的属性,然后获取到具体的值。
OLD呢,就是用在UPDATE、DELETE这两个触发事件的过度变量,用法同NEW一样。
接着就是最后的NOW(),这个就是当前时间。
然后我们创建一下。
是OK的啊,创建好之后,我们来测试一下。
我们插入了一条数据啊,我们来看一下,这个log表中是不是也有一条数据。
是OK的没有错啊,说明我们的触发器生效了。
创建多个执行语句触发器
创建多个执行语句是这样写的
delimiter 分隔符号(自己定义)
create trigger 触发器名称 bffer 或者 after 触发事件
on xxx表 for each row
begin
要操作的SQL1;
要操作的SQL2;
end
分隔符号
delimiter;
这里需要用到两个新东西,一个是这个delimiter,这个东西是做一个划界用的,因为SQL遇到分号啊,就直接执行完成就提交了,我们不能让他提交,不然多条SQL的执行语句后面的就用不到了,而且可能还会报错,所以需要用一下它。
然后就是begin end,这个就是一个开始结束,用法和上面的这个delimiter类似,也是做区域划分的。
知道怎么去创建之后,我们来弄一个多条执行语句的触发器。
我们在删除学生的时候,添加一个log,顺便再去添加一个食物啊,因为举不到合适的例子,就这样吧。
现在我们呢,删除一个学生,就把刚刚添加的内个 触发器 这个学生给他删除了。
是不是删除了?然后我们再来看看日志表
然后再看一下食物表
也是OK的啊。
查看触发器
查看触发器我们使用命令
SHOW TRIGGERS;
我们就用这个命令去查看一下刚刚创建的两个触发器。
当然啊,一个数据库定义的触发器不会太多啊,我是没有遇到定义一大堆的触发器的,除非是业务需要啊。
删除触发器
然后是删除,删除就好说了,直接上命令
DROP TRIGGER 触发器名字
我们来把我们刚刚创建的给他删除了。
我们再来看一下,还有没有触发器了。
很好啊,屁也没有了。
今天就这么多,大家一定要好好练习一下,多练几遍,有不会的加我QQ:2100363119。
明天说存储过程。
最后
以上就是幸福苗条为你收集整理的十六、MySQL数据库之触发器触发器创建触发器查看触发器删除触发器的全部内容,希望文章能够帮你解决十六、MySQL数据库之触发器触发器创建触发器查看触发器删除触发器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复