mysql触发器(触发器)的简明总结和使用
1,个人理解
触发器,字面上,了解触发装置,例如,触发器(哈哈,个人的理解)。例如,当黑暗的时候,你打开灯,你看到东西。你放鞭炮,点燃,就会爆炸。
2,官方定义
触发器(触发器)是一种特殊的存储过程。它的执行不是由程序调用的,也不是手动发起的,而是由事件触发的。例如,当一个表的操作(插入,删除,更新),它会激活它的execution.flip-flops经常被用来加强完整性约束和数据的业务规则,触发器可以在dba_triggers发现,user_triggers数据字典。
触发器的一个非常好的特性是触发器可以禁止或回滚违反引用完整性的更改,从而取消尝试的数据修改。
你是什么意思,比如说,我们都玩过街机游戏,通过了一个水平,做了个记号,一个不从第一个开始就开始了。
官方解释如下
触发程序被认为是单个事务的一部分,因此它可以由原始触发器程序恢复。如果在事务处理过程中检测到严重的错误,例如用户中断,它将自动恢复整个事务。
他在维护数据的完整性方面有着明显的作用,并且有一个例子来说明他的好处,如果代码不是那么复杂的话。
二、触发器语法
复制代码代码如下所示:
创建触发器trigger_name trigger_time trigger_event
在每一行的trigger_stmt tbl_name
触发器程序是与表相关的命名数据库对象,它在表中出现特定事件时激活对象。
触发器的表命名tbl_name.tbl_name相关的必须是一个永久表。触发程序不能与临时表或视图。
trigger_time是作用时间触发程序。它可以在之前或之后,以表明触发器之前或之后激活触发语句。
trigger_event表示语句激活触发program.trigger_event类型可以是下列值之一:
插入:在插入新行时激活触发器,例如,通过插入、加载数据和替换语句。
更新:激活触发器在一行更改时被激活,例如,通过UPDATE语句。
删除:当从表中删除一行时,激活触发器将被激活,例如,通过删除和替换语句。
注意,trigger_event不是SQL语句激活触发器的表操作程序非常相似,这是很重要的。例如,之前关于insert触发器不仅可以通过插入语句激活,而且通过加载数据表。
可能引起混淆的例子是插入。关于重复更新…语法:在每次激活前插入触发器程序,然后在插入或更新触发器之后,更新触发器和后,取决于是否有重复键。
对于一个给定的表,没有两个触发器具有相同的触发器操作时间和事件。例如,在一个表的更新触发器之前没有两个触发器。但是在更新触发器和插入触发器之前有1个,或者在更新触发器和更新触发器1之前有1个触发器。
trigger_stmt是语句时执行触发器被激活。如果你要执行多条语句,您可以使用开始…结束复合语句结构。通过这种方式,您可以使用存储子程序中所允许的语句。
三,创建一个发送器
1、用户表用户
复制代码代码如下所示:
创建表(用户)
` ID ` int(11)不为空auto_increment评论的用户ID,
`名字` varchar(50)不为空的默认'评论'名',
`性` int(1)不为空的默认'0'comment 0为男性,1为女性,
主键(id)
)= MyISAM引擎默认的字符集utf8;
插入'用户'(id,‘名称',‘性'值
(1,张颖,0)。
(2,'tank ',0);
2、评审表注释
复制代码代码如下所示:
创建表(注释)
` c_id ` int(11)不为空auto_increment评论评论ID,
` u_id ` int(11)不为空的用户ID的评论,
`名字` varchar(50)不为空的默认评论用户名,
`内容` varchar(1000)不为空的默认的评论的评论内容,
主键(` c_id `)
)= MyISAM引擎默认的字符集utf8;
插入`评论`(` c_id `,` u_id `,`名字`,`内容`)值
(1, 1,张颖,触发测试),
(2, 1,张颖,解决方案域冗余)
(3, 2,'tank ','使代码更简单);
这里有一个冗余字段,我们发现用户表名在读注释中可以用来联合搜索,为什么有冗余字段,因为一个简单的SQL语句更高效,但不是冗余字段更好,多冗余字段,也会增加数据库的负担。
我想做的是,当我更新用户表的名称时,触发器将同时更新注释表,所以不要编写PHP代码来更新它。当用户被删除时,注释表中的用户数据将被删除。
3,更新名称触发器
复制代码代码如下所示:
分隔符 / / MySQL | |默认结束的标志是一个分号,当你有一个分号写存储过程或触发器,将暂停执行的
删除触发器是否存在updatename | | / /删除触发器名称,
创建触发器的每一行 / /用户更新后updatename创建触发器,
开始
旧的,新的是表示当前操作的记录行,您将它看作是一个表名。
如果new.name!= old.name那么 / /当用户表的名称更改,执行
更新评论集的评论。名称= new.name哪里u_id = old.id评论;
最后如果;
最后| |
Delimiter;
4,触发器删除注释数据。
复制代码代码如下所示:
Delimiter | |
如果存在deletecomment | |触发降
创建触发器deletecomment在每行的用户删除
开始
评论,评论删除。u_id = old.id;
最后| |
Delimiter;
有一件事非常令人沮丧,也就是说,触发代码不能修改,你必须删除和重建。在黑暗中,还有一件事,就是phpMyAdmin。有些可以创造触发器,有些不能,有些可以创建,但它不能被看到。
5,测试触发器是否可用。
一、测试更新触发器
复制代码如下:更新用户组名称=苍鹰ID = 1;
更新后,转到注释表,查看内部的名称字段是否有任何更改。
B,测试删除触发器
复制代码代码如下:从id = 1的用户中删除;
更新后,转到注释表,查看内部的名称字段是否有任何更改。
四、人字拖的优点
1,触发器的自动性。
对于程序员来说,触发器是看不到的,但他做的事情,如果不触发,如果你更新了用户名字段的用户表,冗余字段你会写代码来更新我里面的另一个表,例如,只是一个表,如果有几张表是多余的字段,你的代码是不会写很多的,看起来不是很准确。
2,触发器的数据完整性
触发器具有回滚属性。例如,我发现我非常喜欢解除按钮,也就是说,如果您想更新五个表的数据,就不会更新两个表,而其他三个表也不会更新。
但是如果你用PHP代码写它,它就会发生。例如,您更新了两个表的数据,此时数据库挂起了。您有些郁闷,有些更新了,有些没有更新。