MySQL数据库的触发器的使用

作者:阿柠xn??????? 时间:2024-01-19 07:17:37 

使用触发器

触发器

发生什么事情之后或之前,会自动执行某条语句,这就是触发器

创建触发器

创建触发器要给出的4条关键信息:

  • 1.唯一的触发器名

  • 2.触发器关联的表

  • 3.触发器应该响应的活动(DELETE,INSERT or UPDATE)

  • 4.触发器何时执行(处理之前or之后)

CREATE TRIGGER语句创建触发器

CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW
SELECT 'Product added';

FOR EACH ROW 代码对每个插入行执行。

删除触发器

DROP TRIGGER newproduct;

使用触发器

INSERT触发器

INSERT触发器在INSERT语句执行之前或之后执行。需要知道一下几点:

  • 在INSERT触发器的代码内,可引用一个名为NEW 的虚拟表,访问 * 入的行。

  • 在BEFORE INSERT触发器中,NEW中 的值也可以被更新(允许更改 * 入的值)

  • 对于AUTO_INCREMENT列,NEW 在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值。

CREATE TEIGGER neworder ?AFTER INSERT ON orders
FOR EACH ROW SELECT NEW.order_num;

这个触发器讲了咋个事情呢?你不要觉得云里雾里的,我们知道这个INSERT是不会显示什么信息出来的,所以我们加一个 AFTER INSERT

就是你只要一插入,我们就读出来这个订单号显示出来。就是这么一个功能,你不要想的太复杂了。所以你只能AFTER昂,BEFORE你能读出来个啥。

DELETE触发器

你也需要知道几点:

  • 在DELETE触发器的代码中,你可以引用一个名为OLD的虚拟表,访问被删除的行。

  • OLD中的值全都是只读,不能更新。

例:演示使用OLD保存将要删除的行到一个存档表中。

CREATE TRIGGER deleteorder BEFORE DELETE ON oreders
FOR EACH ROW
BEGIN
   INSERT INTO archive_orders(order_num,order_date,cust_id)
   VALUES(OLD.order_num,OLD.order_date,OLD.cust_id);
END;

UPDATE触发器

注意几点:

  • 在UPDATE触发器代码中,你可以引用一个OLD的虚拟表访问以前的值,引用一个名为NEW的虚拟表访问更新的值。

  • 在BEFORE UPDATE触发器中,NEW中的值可能也被更新

  • OLD中的全是只读的。

例:保证州名缩写总是大写

CREATE TRIGGER updatevendor BEFORE UPDATE ON vendors
FOR EACH ROW SET NEW.vend_state = Upper(New.vend_state);

??这个例子我想说一下,它这个的话就意味着我们对这个NEW的改变是会影响到实际表中的。这点应该注意到。

触发器的进一步介绍

MySQL触发器是不支持CALL语句的,这是十分遗憾的,所需的存储过程的代码需要复制到触发器内。

来源:https://juejin.cn/post/7139696060045197342

标签:MySQL,数据库,触发器
0
投稿

猜你喜欢

  • 用python实现k近邻算法的示例代码

    2022-08-28 16:08:58
  • 使用eval()解析JSON格式字符串应注意的问题

    2008-04-16 15:46:00
  • 三分钟时间教你用Python绘制春联

    2023-11-06 00:26:08
  • 用Python登录好友QQ空间点赞的示例代码

    2023-08-08 09:29:40
  • 对python中数组的del,remove,pop区别详解

    2021-01-23 09:22:31
  • 基于python和flask实现http接口过程解析

    2022-06-01 11:46:36
  • javascript ImgBox透明遮罩层背景图片展示

    2024-02-27 04:51:07
  • Vue.js每天必学之过滤器与自定义过滤器

    2024-05-09 10:41:36
  • Python运行的17个时新手常见错误小结

    2023-05-20 00:13:17
  • Matplotlib条形图之分组条形图和堆叠条形图详解

    2021-08-10 15:16:24
  • Python编程求质数实例代码

    2021-12-03 23:17:18
  • Python 中的pass语句语法详析

    2023-02-11 03:17:44
  • Python django导出excel详解

    2021-06-15 17:12:19
  • Python Django 简单分页的实现代码解析

    2021-11-05 13:27:38
  • 在Linux系统上部署Apache+Python+Django+MySQL环境

    2024-01-14 00:51:15
  • Doctype之谜

    2009-07-22 20:48:00
  • 小议sqlserver数据库主键选取策略

    2011-10-24 19:51:30
  • java 数据库连接与增删改查操作实例详解

    2024-01-25 10:14:28
  • xmlhttp中运行getResponseHeader出错,提示:The requested header was not found

    2010-03-27 21:47:00
  • 真正高效的SQLSERVER分页查询(多种方案)

    2024-01-28 15:50:25
  • asp之家 网络编程 m.aspxhome.com