MySQL数据库的触发器的使用

 更新时间:2022年09月29日 09:39:57   作者:阿柠xn​​​​​​​  
这篇文章主要介绍了MySQL数据库的触发器的使用,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

使用触发器

触发器

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

创建触发器

创建触发器要给出的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语句的,这是十分遗憾的,所需的存储过程的代码需要复制到触发器内。

到此这篇关于MySQL数据库的触发器的使用的文章就介绍到这了,更多相关MySQL触发器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql性能优化方案分享

    Mysql性能优化方案分享

    这篇文章主要为大家分享了Mysql性能优化方案,帮助大家进行Mysql性能优化,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • MySQL开发中存储函数与触发器使用示例

    MySQL开发中存储函数与触发器使用示例

    这篇文章主要为大家详细介绍了MySQL中存储函数的创建与触发器的设置,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-01-01
  • MySQL 8.0.28 安装配置图文教程

    MySQL 8.0.28 安装配置图文教程

    这篇文章主要为大家详细介绍了MySQL 8.0.28 安装配置图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • MySQL数据库的实时备份知识点详解

    MySQL数据库的实时备份知识点详解

    本篇文章给大家分享了关于MySQL数据库的实时备份知识点内容,有需要的朋友们可以参考下。
    2018-08-08
  • MySQL快速对比数据技巧

    MySQL快速对比数据技巧

    这篇文章主要介绍了MySQL快速对比数据的方法以及技巧分享,如果对此有兴趣,一起跟着小编学习下吧。
    2018-02-02
  • MySQL数据表添加字段的三种方式

    MySQL数据表添加字段的三种方式

    本文主要介绍了MySQL数据表添加字段的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Mysql怎么存储json格式数据详解

    Mysql怎么存储json格式数据详解

    在开发中遇到存取html值的情况,并且要根据id进行实时返回,在做的时候想到了mysql的json类型存储,下面这篇文章主要给大家介绍了关于Mysql怎么存储json格式数据的相关资料,需要的朋友可以参考下
    2022-06-06
  • MySQL8.0.24版本Release Note的一些改进点

    MySQL8.0.24版本Release Note的一些改进点

    这篇文章主要介绍了MySQL8.0.24版本Release Note的一些改进点,帮助大家更好的对新版本的MySQL进行测试使用,感兴趣的朋友可以了解下
    2021-04-04
  • 详解MySQL中的数据类型和schema优化

    详解MySQL中的数据类型和schema优化

    这篇文章主要介绍了MySQL中的数据类型和schema优化的相关资料,帮助大家更好的理解和学习MySQL的知识,感兴趣的朋友可以了解下
    2020-10-10
  • MySQL深分页问题原理与三种解决方案

    MySQL深分页问题原理与三种解决方案

    本文主要介绍了MySql深分页问题原理与解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论