飞跃高山与大洋的鱼飞跃高山与大洋的鱼
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
首页
先看
计算机
  • 数学
  • Linux
  • Arch
  • Manjaro
  • Ubuntu
  • CentOS
  • Kubernetes
  • Web
  • JavaScript
  • TypeScript
  • CSS
  • Canvas
  • Vue
  • Vite
  • NuxtJS
  • Webpack
  • Flutter
  • D3
  • Jest
  • WeApp
  • Utils
  • Nodejs
  • Nestjs
  • Golang
  • Nginx
  • Traefik
  • MySQL
  • MongoDB
  • Redis
  • Docker
算法
  • 像素风
  • Git
  • Github
  • VSCode
  • Chrome
  • Google
  • Bookmark scripts
  • 导航 🎉
  • VuePress 侧边栏插件
  • VuePress 官网
🚇 开往
  • MYSQL

    • MySQL
    • INSERT、UPDATE & DELETE
    • JOIN & UNION
    • SELECT
    • Stored Procedure
    • TRANSACTIONS
    • TRIGGER
      • 实践
        • INSERT
        • UPDATE
    • VIEWS

TRIGGER

触发器是在 INSERT、UPDATE、DELETE 语句前后自动执行的一段。

每个表每个事件每次只允许一个触发器,因此每个表最多支持 6 个触发器(每条 INSERT、UPDATE、DELETE 的之前和之后)。

实践

INSERT

MYSQL5以后,不允许触发器返回任何结果,而且缺乏返回的对比,不如为其新增一列。

DROP TRIGGER IF EXISTS orders_after_insert;

DELIMITER //

CREATE TRIGGER orders_after_insert
  AFTER INSERT ON orders
  FOR EACH ROW
BEGIN
    SELECT NEW.order_num INTO @order;
END//

DELIMITER ;

UPDATE

DROP TRIGGER IF EXISTS vendors_before_update;

DELIMITER //

CREATE TRIGGER vendors_before_update
  BEFORE UPDATE ON vendors
    FOR EACH ROW
BEGIN
    SET NEW.vend_state = upper(NEW.vend_state);
END//

DELIMITER ;
编辑文档!
上次更新:
贡献者: shanyuhai123
Prev
TRANSACTIONS
Next
VIEWS