这篇文章主要介绍了mysql触发器触发的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
什么是触发器
触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
举个例子,比如你现在有两个表【用户表】和【日志表】,当一个用户被创建的时候,就需要在日志表中插入创建的日志日志,如果在不使用触发器的情况下,你需要编写程序语言逻辑才能实现,但是如果你定义了一个触发器、触发器的作用就是当你在用户表中插入一条数据的之后帮你在日志表中插入一条日志信息。当然触发器并不是只能进行插入操作,还能执行修改,删除。
创建触发器
创建触发器的语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event 提醒tb_name FOR EACH ROW trigger_stmt trigger_name:触发器的名称 tirgger_time:触发时机,为之前或之后者 trigger_event:触发事件,为插入、删除或更新者 tb_name:表示建立触发器的表明,就是在哪张表上建立触发器 trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用开始和结束包含的多条语句 所以可以说MySQL创建以下六种触发器: BEFORE  BEFORE  BEFORE 插入,删除,更新 AFTER  AFTER  AFTER 插入,删除,更新
其中,触发器名参数指要创建的触发器的名字
之前和之后参数指定了触发执行的时间,在事件之前或是之后为每一行
表示任何一条记录上的操作满足触发事件都会触发该触发器
创建有多个执行语句的触发器
CREATE TRIGGER 触发器名,前| AFTER 触发事件 提醒表名,FOR EACH 行 开始 ,,执行语句列表
结束其中,开始与结束之间的执行语句列表参数表示需要执行的多个语句,不同语句用分号隔开
<强>提示:强>一般情况下,mysql默认是以;作为结束执行语句,与触发器中需要的分行起冲突
,,为解决此问题可用分隔符,如:分隔符| |,可以将结束符号变成| |
,当触发器创建完成后,可以用分隔符,来将结束符号变成;
mysql>, DELIMITER | | mysql>, CREATE TRIGGER  demo BEFORE 删除 →,才能提醒users FOR EACH 行 →才能开始 →,才能INSERT INTO logs 价值(现在()); →,才能INSERT INTO logs 价值(现在()); →才能结束 →才能,| | Query 好吧,,0,rows affected (0.06,秒) mysql>, DELIMITER ;
上面的语句中,开头将结束符号定义为| |,中间定义一个触发器,一旦有满足条件的删除操作
就会执行开始和结束中的语句,接着使用| |结束
最后使用分隔符;将结束符号还原
tigger_event:
数据加载语句是将文件的内容插入到表中,相当于是插入语句,而替代语句在一般的情况下和插入差不多,但是如果表中存在的主要或者独特的索引的时候,如果插入的数据和原来的主键或者独特相同的时候,会删除原来的数据,然后增加一条新的数据,所以有的时候执行一条替代语句相当于执行了一条删除和插入语句。
触发器可以是一条SQL语句,也可以是多条SQL代码块,那如何创建呢?
DELIMITER $, #将语句的分隔符改为美元 开始 sql1; sql2; … sqln 最终获得美元 DELIMITER ,, #将语句的分隔符改回原来的分号“,“
在开始…结束语句中也可以定义变量,但是只能在开始…结束内部使用:
声明var_name var_type(默认值)#定义变量,可指定默认值
引用>
设置var_name=值#给变量赋值<强>新和旧的使用:强>
,根据以上的表格,可以使用一下格式来使用相应的数据:
NEW.columnname:新增行的某列数据
引用>
。columnname:删除行的某列数据说了这么多现在我们来创建一个触发器吧!
mysql触发器触发的使用案例