MYSQL中的触发器
发布时间:2022-09-12 17:20:32 所属栏目:MySql教程 来源:
导读: 概述:
MYSQL的触发器和存储过程一样,都是嵌入到MYSQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT 、UPDATE、DELETE 语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发
MYSQL的触发器和存储过程一样,都是嵌入到MYSQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT 、UPDATE、DELETE 语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发
概述: MYSQL的触发器和存储过程一样,都是嵌入到MYSQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT 、UPDATE、DELETE 语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作。触发程序是与表有关的命名数据库对象,当表上出现特定事件时mysql触发器,将激活该对象。 创建触发器: 触发器(trigger)是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL 语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用。比如当对fruits 表进行操作(INSERT、DELETE、或UPDATE)时就会激活它执行。 触发器可以查询其他表,而且可以包含复杂的SQL语句,他们主要用于满足复杂的业务规则或要求。例如:可以根据客户当前的账户状态,控制是否允许插入新订单。 1、创建只有一个执行语句的触发器 基本语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW trigger_stmt 其中:trigger_name 标识触发器名称,用户自行指定;trigger_time标识触发时机,可以指定为before或after;trigger_event 标识触发事件,包括INSERT 、UPDATE、和DELETE;tb1_name标识建立触发器的表名,即在哪张表上建立触发器;trigger_stmt是触发器执行语句。 例如:创建一个单执行语句的触发器 CREATE TABLE account (acct_num int ,amount DECIMAL(10,2)); CREATETRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum=@sum+new.amount; 首先创建一个account表,表中有两个字段,分别为:acct_num字段(定义为int类型),amount字段(定义成浮点类型); 其次创建一个名为 ins_sum的触发器,触发的条件是向数据表account 插入数据之前,对新插入的amount字段值进行求和计算。 解释:首先创建一个account表,在向表account插入数据之前,计算所有新插入的account表的amount值之和,触发器的名称为ins_sum,条件是在向表插入数据之前触发。 2、创建有多个执行语句的触发器 基本语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tb1_name FOR EACH ROW BEGIN 语句执行列表 END 其中 trigger_name标识触发器的名称,用户自行指定;trigger_time标识触发时机,可以指定为before或after ;trigger_event标识触发事件,包括INSERT、UPDATE、和DELETE ;tb1_name标识建立触发器的表名,即在那张表上建立触发器,触发器程序可以使用BEGIN和END 作为开始和结束中间包含多条语句。 ●作者简介:挨踢小子,现在就读于某某大学,一个一无所有,努力拼搏不负青春的小子,喜欢文字,爱好读书。公众号: 挨踢小子(LN-aitixiaozi )。 aHR0cDovL3dlaXhpbi5xcS5jb20vci91RU1ERzMzRVFpQTlyVGw0OXhhcQ== (二维码自动识别) (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读