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将失败。