MySQL学习——触发器的语法和示例

触发器(trigger)是数据库中的一个重要概念。触发器是与表相关联的命名数据库对象,当表上发生特定事件时,触发器会被激活。

触发器定义为在语句插入、更新或删除关联表中的行时激活。这些行操作是触发事件。例如,可以通过INSERT或LOAD DATA语句插入行,并为每个插入的行激活插入触发器。触发器可以设置为在触发事件之前或之后激活。例如,可以在表中插入的每一行之前或更新的每一行都激活触发器。

MySQL触发器仅针对SQL语句对表所做的更改而激活。这包括对作为可更新视图基础的基表的更改。对于不将SQL语句传输到MySQL Server的API对表所做的更改,触发器不会激活。这意味着触发器不会被使用NDB API进行的更新激活。

INFORMATION_SCHEMA或performance_SCHEMA表中的更改不会激活触发器。这些表实际上是视图,不允许在视图上使用触发器。

以下部分描述了创建和删除触发器的语法,显示了一些如何使用触发器的示例,并指示了如何获取触发器元数据。

这里有一个简单的例子,它将触发器与表相关联,以激活INSERT操作。触发器充当累加器,将插入表的某一列的值相加。

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

Query OK, 0 rows affected (0.03 sec) 



mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account 

FOR EACH ROW SET @sum = @sum + NEW.amount; 

Query OK, 0 rows affected (0.01 sec)

CREATE TRIGGER语句创建一个名为ins_sum的触发器,该触发器与account表相关联。它还包括指定触发器动作时间、触发事件以及触发器激活时要做什么的条款:

  1. 关键字BEFORE表示触发器动作时间。在这种情况下,触发器会在每一行插入表之前激活。这里允许的另一个关键字是AFTER。
  2. 关键字INSERT表示触发事件;即激活触发器的操作类型。在该示例中,INSERT操作会导致触发器激活。您还可以为DELETE和UPDATE操作创建触发器。
  3. FOR EACH ROW后面的语句定义了触发器主体;也就是说,每次触发器激活时要执行的语句,对于受触发事件影响的每一行都会发生一次。在该示例中,触发器主体是一个简单的SET,它将插入金额列的值累积到用户变量中。该语句将该列称为NEW.amount,意思是“要插入新行的金额列的值”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值