MySQL _ 12 _ 触发器

本文介绍了MySQL触发器的概念及作用,详细讲解了如何创建单条和多条执行语句的触发器,并提供了查看和删除触发器的方法。通过示例展示了触发器在数据更新、插入时的自动操作,强调了使用触发器时的注意事项,如每个表每个事件只能有一个触发器。
摘要由CSDN通过智能技术生成

触发器(trigger)是一个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。

触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于满足复杂的业务规则或要求。例如,可以根据客户当前的账户状态控制是否允许插入新订单。本节将介绍如何创建触发器。


01 _ 创建触发器

CREATE TRIGGER `trigger_name` `trigger_time` `trigger_event`
ON `tbl_name` FOR EACH ROW `trigger_stmt`

------------------------------------------------------

`trigger_name` -- 表示触发器名称,用户自行指定
`trigger_time` -- 表示触发时机,可以指定为before或after
`trigger_event` -- 表示触发事件,包括INSERT、UPDATE和DELETE
`tbl_name` -- 表示建立触发器的表名,即在哪张表上建立触发器
`trigger_stmt` -- 是触发器执行语句,可以是一条语句。
               -- 也可以用BEGIN和END作为开始和结束,中间包含多条语句。

创建一个单执行语句的触发器

  1. 创建一个account表,表中有两个字段,分别为acct_num字段(定义为int类型)和amount字段(定义成浮点类型)
CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
  1. 创建一个名为ins_sum的触发器,触发的条件是向数据表account插入数据之前,对新插入的amount字段值进行求和计算。
Create Trigger ins_sum Before Insert
On myaccount For Each Row Set @sum = @sum + NEW.amount;
  1. 插入数据,测试。
mysql> Set @sum = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> Insert Into account values(1,1.00),(2,2.00);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> Select @sum;
+------+
| @sum |
+------+
| 3.00 |
+------+
1 row in set (0.00 sec)

mysql>

创建有多个执行语句的触发器

  1. 创建几个表
Create Table test1(a1 Int);
Create Table test2(a2 Int);
Create Table test3(a3 Int Not Null Auto_Increment Primary Key);
Create Table test4(
    a4 Int Not Null Auto_Increment Primary Key,
    b4 Int Default 0
);
  1. 创建存储过程
Delimiter //
Create Trigger testref Before Insert On test1 For Each Row
Begin
	Insert Into test2 Set a2 = NEW.a1;
	Delete From test3 Where a3 = NEW.a1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值