这篇文章主要介绍了mysql触发器如何写,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
触发器是与mysql数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。
<强>语法格式如下:强>
创建& lt;触发器名比;& lt;比之前|之后; & lt;插入|更新|删除比; & lt;表名的在每个Row<触发器主体在
<强>语法说明如下。强>
<强> 1)触发器名强>
触发器的名称,触发器在当前数据库中必须具有唯一的名称。如果要在某个特定数据库中创建,名称前面应该加上数据库的名称。
<强> 2)插入|更新|删除强>
触发事件,用于指定激活触发器的语句的种类。
<强>注意:强>三种触发器的执行时间如下.INSERT:将新行插入表时激活触发器。例如,插入前的触发器不仅能被MySQL的插入语句激活,也能被加载数据语句激活DELETE:从表中删除某一行数据时激活触发器,例如删除和替换语句.UPDATE:更改表中某一行数据时激活触发器,例如更新语句。
<强> 3)|在强>
之前和之后,触发器被触发的时刻,表示触发器是在激活它的语句之前或之后触发。若希望验证新数据是否满足条件,则使用之前选项,若希望在激活触发器的语句执行之后完成几个或更多的改变,则通常使用后选项。
<强> 4)表名强>
与触发器相关联的表名,此表必须是永久性表,不能将触发器与临时表或视图关联起来。在该表上触发事件发生时才会激活触发器。同一个表不能拥有两个具有相同触发时刻和事件的触发器。例如,对于一张数据表,不能同时有两个更新之前触发器,但可以有一个更新之前触发器和一个之前插入触发器,或一个之前更新触发器和一个更新后触发器。
<强> 5)触发器主体强>
触发器动作主体,包含触发器激活时将要执行的MySQL语句。如果要执行多个语句,可使用开始…结束复合语句结构。
<强> 6)为每一行强>
一般是指行级触发,对于受触发事件影响的每一行都要激活触发器的动作,例如,使用插入语句向某个表中插入多行数据时,触发器会对每一行数据的插入都执行相应的触发器动作。
<强>注意:强>每个表都支持插入、更新和删除之前与之后的,因此每个表最多支持6个触发器。每个表的每个事件每次只允许有一个触发器。单一触发器不能与多个事件或多个表关联。
另外,在MySQL中,若需要查看数据库中已有的触发器,则可以使用显示触发语句。
<强>例子:强>
开始 如果新。州(& # 39;2 & # 39;& # 39;3 & # 39;) 插入“userservice”。“ehome_us_green_examine” (modifyuser modifydate brancCode stateDescription,状态, userID, fromSystemkey applydate、makeHospitalName illnessName, 用户名、rightsholderName tranno) 值(sysdate() & # 39;管理# 39;,老了。brancCode,老了。stateDescription new.state, & # 39;& # 39;old.fromSystemkey, old.applydate, old.makeHospitalName, old.illnessName, old.userName,老了。rightsholderName old.tranno); 如果; 结束
<强>这个触发器比较简单,强>
1,开始到结束,之间是对数据库的操作
2,如果到最后之间是判断,你想的对,就是如果…的意思
3,新的。国家,(& # 39;2 & # 39;& # 39;3 & # 39;)这句的意思是:该表的字段状态为(2或3者)的时候
4,执行下面的插入语句,新为新值,旧的是原来的值(如老了。用户名就是原来的这个字段的值)
5,整个触发器翻译成白话就是,如果该表的状态变成2或3者的时候,执行下面的插入语句
备注:那么触发器是发生在状态变化之前还是之后呢?选前或者之后,顾名思义。
感谢你能够认真阅读完这篇文章,希望小编分享mysql触发器如何写内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!