MySQL中触发器的简单介绍与介绍
创建触发器trigger_name trigger_time trigger_event
在每一行的trigger_stmt tbl_name
的trigger_name标识的触发器的名称,和用户指定它本身;
trigger_time识别触发时间,取代之前和之后;
trigger_event识别触发事件,通过插入、更新和删除所取代;
的tbl_name标志创建触发器的表的名称,这是触发的表。
trigger_stmt是触发程序的主体;触发程序可以使用开始和结束的开始和结束,中间有多个语句;
~解释~
创建触发器时,触发器必须有一个名称,最多有64个字符,可能后面会有一个分隔符。像其他对象及其基本MySQL命名一样。{在} - |触发器的执行时间设置:可以设置为之前或之后的事件。{插入更新删除} - | |还可以设置触发事件:他们可以在插入执行过程中触发,更新或delete.on触发器表:当我们插入、更新或删除该表操作,我们触发触发器的激活。我们不能安排两触发相同的事件在同一table.for每行——触发器的执行间隔:每行的条款告诉触发器执行一个动作每隔一行,而不是整个表执行一次。触发器包含SQL语句触发:这里的语句可以是任何合法的语句,包括复合报表,但这里的陈述是受相同的功能的功能,你必须创建一个触发器(触发器)相当大的权力,如果你已经是root用户,那么这就足够了。这是由不同的SQL标准。
~(1)例
那:
创建一个表,表
复制代码代码如下所示:
如果表下降存在表;
创建表的表(
tab1_id varchar(11)
);
创建一个表,表2
复制代码代码如下所示:
如果表下降存在TAB2;
创建表(表2
tab2_id varchar(11)
);
创建一个触发器:t_afterinsert_on_tab1
效果:添加TAB1表自动记录并将该记录添加到TAB2表
复制代码代码如下所示:
如果存在t_afterinsert_on_tab1触发降;
创建触发器t_afterinsert_on_tab1
插入在表后
每一行
开始
插入TAB2(tab2_id)值(新。tab1_id);
结束;
测试
复制代码代码如下所示:
插入表(tab1_id)值('0001);
看结果
SELECT * FROM表;
SELECT * FROM TAB2;
例2:
创建一个触发器:t_afterdelete_on_tab1
效果:删除表表记录自动删除在TAB2表的相应记录
复制代码代码如下所示:
如果存在t_afterdelete_on_tab1触发降;
创建触发器t_afterdelete_on_tab1
删除表后
每一行
开始
删除从哪里tab2_id = old.tab1_id TAB2;
结束;
测试
复制代码代码如下所示:
删除表,tab1_id = '0001;
看结果
SELECT * FROM表;
SELECT * FROM TAB2;
mysql触发器的执行顺序
与触发器相关的几个问题
3.1如果sql触发器程序失败,SQL会成功吗
实验如下:
1)设置一个触发前在fc_word.planinfo:
复制代码代码如下所示:
分隔符|
创建触发器trigger_before_planinfo_update
更新前
在每一行的fc_word.planinfo
开始
插入fc_output.abc(planid)值(新。planid);
结束
2)观点:MySQL >选择从哪里showprob planinfo planid = 1;
---------- + +
| showprob |
---------- + +
2 | |
---------- + +
3)sql的实现:
更新planinfo集showprob = 200,planid = 1;触发程序;
4)由于对fc_output.abc缺席前触发失败,提示:
错误1146(42s02):table'fc_output abc'doesn不存在。
5)再见:
MySQL >选择showprob从planinfo哪里planid = 1;
---------- + +
| showprob |
---------- + +
2 | |
---------- + +
也就是说,SQL的修改没有成功执行,也就是说,如果前触发器失败,SQL将失败。