mysql触发器使用详细解决方案

mysql触发器使用详细解决方案
MySQL包含对触发器的支持。Trigger是一个与表操作相关的数据库对象。当指定的事件发生在触发器表上时,它将被调用,也就是说,表的操作事件触发表上触发器的执行

创建一个触发器

在MySQL中,触发器语法如下所示创建:

复制代码代码如下所示:

创建触发器trigger_name

trigger_time

在tbl_name trigger_event

每一行

trigger_stmt
其中:

trigger_name:识别的触发器的名称,而用户将指定它本身;

trigger_time:识别的触发时间之前或之后。

trigger_event:识别触发,是珍贵的插入、更新或删除事件;

tbl_name:识别的触发器的名称,这是在表上创建触发器。

trigger_stmt:触发体,可以是一个SQL语句或多个语句包含在开始和结束。

可以看出,可以设置6种触发器,即插入前、更新前、删除前、插入后、更新后、删除后。

另一个限制是2个触发器不能同时建立在一个表上,所以最多6个触发器是在一个表上建立的。

trigger_event详细解释

除了定义插入、更新和删除的基本操作之外,MySQL还定义了加载数据和替换语句。这两个语句也可以触发上述6种类型的触发器。

负载数据语句用于将文件加载到数据表中,相当于一系列插入操作。

替换语句和INSERT语句一般类似于表中的主键或唯一索引,如果插入的数据和原始主键或唯一索引是一致的,将首先删除原始数据,然后添加一个新数据,也就是说,替换语句有时相当于A。

插入语句有时相当于带有INSERT语句的删除语句。

插入类型触发器:当插入一行时触发触发器,该触发器可能由插入、加载数据和替换语句触发。

更新类型触发器:当一行更改时触发触发器,这可能由更新语句触发。

删除类型触发器:删除一行时激活触发器,该触发器可能由删除和替换语句触发。

开始…结束详细解释

在MySQL,开始…结束语句的语法是:

开始

{ statement_list }

结束

在这,statement_list代表一个或多个语句,每个列表中的语句必须以分号(;)。

在MySQL中,分号是语句的结束符,和分号表示该段语句结束,和MySQL可以开始执行。因此,译员开始后遇到的statement_list分号执行,然后错误报道,因为没有终端匹配开始。

然后使用分隔符命令(分隔符分隔符,含义),它是一个命令,不需要结束标记,语法:

分隔符new_delemiter

new_delemiter可以设置为1或更大的长度和符号,默认是一个分号(;),我们可以修改它以其他符号,比如$:

为分隔符

在此之后,语句以分号结束,解释器没有任何反应。只有一美元,它被认为是声明的结束。注意使用后,我们应该记住修改它。

触发器的完整创建的一个示例

假定系统中有两个表:

类的类(类数的ClassID,类数stucount)

学生名单的学生(学号愚蠢,班号classid)

要创建一个触发器来自动更新学生列表中的学生人数,代码如下:

复制代码代码如下所示:

为分隔符

创建触发器tri_stuinsert插入后

每排学生

开始

声明C;

C =(选择stucount从ClassID =新课。classid);

更新类集stucount = C + 1 = new.classid classid;

美元

分隔符;
变量的详细方案

MySQL使用声明来定义一个局部变量,它只能在开始时……使用结束复合语句,应该在复合语句的开头定义。

在其他语句之前,语法如下:

声明var_name {,} {默认值类型…

其中:

var_name是变量的名字,如SQL语句一样,变量名是大小写不敏感;对任何数据类型支持mysql型;我们可以同时定义多个同类型的变量,用逗号隔开;如果必要的变量的初始值是空的,,你可以使用默认条款提供默认值可以指定为一个表达。

set语句用于变量赋值,语法是:

集var_name =表达式{,} var_name =表达式…

新老说明
在上面的示例中,使用了新关键字,类似于插入和删除的MS Server,新的和旧的在MySQL中定义为代表。

在触发器表中,触发器的数据行被触发。

明确地:

在插入类型触发器中,新用来表示将插入(之前)或已经(之后)插入的新数据;

在更新类型触发器中,旧的用于表示将要被修改或已被修改的原始数据,新的用于表示将要或已经被修改的新数据。

在删除类型触发器中,旧用于表示将要删除或已被删除的原始数据;

用法:NEW.columnName(columnName是一个列表的对应数据表的名称)

另外,老是只读的,而新的可以在触发器中使用set赋值,因此它不会再次触发触发器,导致循环调用。例如,在插入一个学生之前,它会加上2013的学号。

查看触发器
与show数据库视图(show)视图窗体(显示表)一样,查看触发器的语法如下所示:

从schema_name } {显示触发器;

其中,schema_name是架构的名称,这是架构和数据库MySQL,那都是一样的,你可以指定数据库的名称,

我没有用database_name第一。

删除触发器
与删除数据库和删除表一样,删除触发器的语法如下所示:

删除触发器{如果存在} { } trigger_name schema_name。

触发器的执行顺序
我们建立的数据库一般InnoDB数据库和表建立在他们的事务表,这是交易安全的。在这一点上,如果SQL语句或触发失败,MySQL将回滚事务,有:

(1)如果触发器失败,SQL不能正确执行。

当SQL执行失败时,将不会触发后类型触发器。

(3)后类型触发器失败,SQL将回滚。

如果对MySQL触发器的使用有任何疑问,让我给大家留言,一起进步。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部