触发器

MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序,触发器是通过事件触发某个操作,这些事件包括INSERT,UPDATE,DELETE语句,当一个数据表上的这些语句执行时,如果定义了相应的触发器,触发器就会执行。触发器也是一种特殊的存储过程。

创建触发器

CREATE
    [DEFINER = { user | CURRENT_USER }]
    TRIGGER trigger_name
    trigger_time trigger_event
    ON tbl_name FOR EACH ROW
    [trigger_order]
    trigger_body

trigger_time: { BEFORE | AFTER }

trigger_event: { INSERT | UPDATE | DELETE }

trigger_order: { FOLLOWS | PRECEDES } other_trigger_name
  • trigger_name 触发器名
  • trigger_time 触发时机
  • trigger_event 触发事件

例子:创建一个触发器(来自官方文档)

CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
CREATE TRIGGER ins_sum BEFORE INSERT ON account
       FOR EACH ROW SET @sum = @sum + NEW.amount;

注:

  • @sum是声明临时变量,这个触发器的作用是用一个临时变量记录
  • NEW.amount 官网的说明是这个变量代表新插入的行数

触发器也可以包含多个SQL语句,只要用begin...end语句块替换上面的单条语句就行了。

查看触发器

show triggers;

删除触发器

drop trigger <triggername>;
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap