iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql触发器有什么作用
  • 501
分享到

mysql触发器有什么作用

2024-04-02 19:04:59 501人浏览 八月长安
摘要

下面一起来了解下Mysql触发器有什么作用,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql触发器有什么作用这篇短内容是你想要的。         

下面一起来了解下Mysql触发器有什么作用,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql触发器有什么作用这篇短内容是你想要的。                                                            

触发器语法:

CREATE TRIGGER <触发器名称>  --触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和Mysql中其他对象的命名方式基本相象.
{ BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后。
{ INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
ON <表名称>  --触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。
FOR EACH ROW  --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。
<触发器SQL语句>  --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。

一张表只能创建一个触发器

触发器(trigger):监视某种情况,并触发某种操作。

触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)

语法:

create trigger triggerName
after/before insert/update/delete on 表名
for each row   #这句话在mysql是固定的
begin

sql语句;

end;

注:各自颜色对应上面的四要素。

首先我们来创建两张表:

#商品表
create table g
(
  id int primary key auto_increment,
  name varchar(20),
  num int
);
#订单表
create table o
(
  oid int primary key auto_increment,
   gid int,
     much int
);
insert into g(name,num) values('商品1',10),('商品2',10),('商品3',10);

如果我们在没使用触发器之前:假设我们现在卖了3个商品1,我们需要做两件事

1.往订单表插入一条记录

insert into o(gid,much) values(1,3);

2.更新商品表商品1的剩余数量

update g set num=num-3 where id=1;

现在,我们来创建一个触发器:

需要先执行该语句:delimiter $(意思是告诉mysql语句的结尾换成以$结束)

create trigger tg1
after insert on o
for each row 
begin
update g set num=num-3 where id=1;
end$

这时候我们只要执行:

insert into o(gid,much) values(1,3)$

会发现商品1的数量变为7了,说明在我们插入一条订单的时候,触发器自动帮我们做了更新操作。

但现在会有一个问题,因为我们触发器里面num和id都是写死的,所以不管我们买哪个商品,最终更新的都是商品1的数量。比如:我们往订单表再插入一条记录:insert into o(gid,much) values(2,3),执行完后会发现商品1的数量变4了,而商品2的数量没变,这样显然不是我们想要的结果。我们需要改改我们之前创建的触发器。

我们如何在触发器引用行的值,也就是说我们要得到我们新插入的订单记录中的gid或much的值。

对于insert而言,新插入的行用new来表示,行中的每一列的值用new.列名来表示。

所以现在我们可以这样来改我们的触发器

create trigger tg2
after insert on o
for each row 
begin
update g set num=num-new.much where id=new.gid;(注意此处和第一个触发器的不同)
end$

第二个触发器创建完毕,我们先把第一个触发器删掉

drop trigger tg1$

再来测试一下,插入一条订单记录:insert into o(gid,much) values(2,3)$

执行完发现商品2的数量变为7了,现在就对了。

现在还存在两种情况:

1.当用户撤销一个订单的时候,我们这边直接删除一个订单,我们是不是需要把对应的商品数量再加回去呢?

2.当用户修改一个订单的数量时,我们触发器修改怎么写?

我们先分析一下第一种情况:

监视地点:o表

监视事件:delete

触发时间:after

触发事件:update

对于delete而言:原本有一行,后来被删除,想引用被删除的这一行,用old来表示,old.列名可以引用被删除的行的值。

那我们的触发器就该这样写:

create trigger tg3
after delete on o
for each row
begin
update g set num = num + old.much where id = old.gid;(注意这边的变化)
end$

创建完毕。

再执行delete from o where oid = 2$

会发现商品2的数量又变为10了。

第二种情况:

监视地点:o表

监视事件:update

触发时间:after

触发事件:update

对于update而言:被修改的行,修改前的数据,用old来表示,old.列名引用被修改之前行中的值;

修改的后的数据,用new来表示,new.列名引用被修改之后行中的值。

那我们的触发器就该这样写:

create trigger tg4
after update on o
for each row
begin
update g set num = num+old.much-new.much where id = old/new.gid;
end$

先把旧的数量恢复再减去新的数量就是修改后的数量了。

我们来测试下:先把商品表和订单表的数据都清掉,易于测试。

假设我们往商品表插入三个商品,数量都是10,

买3个商品1:insert into o(gid,much) values(1,3)$

这时候商品1的数量变为7;

我们再修改插入的订单记录: update o set much = 5 where oid = 1$

我们变为买5个商品1,这时候再查询商品表就会发现商品1的数量只剩5了,说明我们的触发器发挥作用了。

看完mysql触发器有什么作用这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。

您可能感兴趣的文档:

--结束END--

本文标题: mysql触发器有什么作用

本文链接: https://www.lsjlt.com/news/35228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql触发器作用是什么
    mysql触发器的作用是:1、通过在触发器中定义约束和验证逻辑,可以保证数据的完整性和一致性;2、自动化执行一些常见的数据库操作,减少编写重复代码的工作量;3、记录对数据库表的修改操作,用于审计和追踪数据变更;4、在源数据库上捕获数据更改事...
    99+
    2023-07-25
  • mysql触发器有什么用
    小编给大家分享一下mysql触发器有什么用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!触发器是一种特殊类型的存储过程。触发器主要是通过事件(增、删、改)进行触发被自动调用执行的。触发器常用于...
    99+
    2024-04-02
  • mysql触发器的作用是什么
    本篇内容介绍了“mysql触发器的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明在写数据之前,可以强制检查或转换数据等。触发器...
    99+
    2023-06-20
  • PL/SQL的触发器有什么作用
    PL/SQL的触发器是一种存储在数据库中的程序,其目的是通过在指定的表上自动执行一组操作来实现数据一致性和完整性。触发器可以在数据插...
    99+
    2024-05-07
    PL/SQL
  • MySQL触发器能干什么用
    这篇文章主要介绍MySQL触发器能干什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!MySQL触发器的作用是可以跟踪用户对数据库的操作,实现复杂的非标准的数据库相关完整性规则,能...
    99+
    2024-04-02
  • mysql触发器的工作原理是什么
    MySQL触发器是一种特殊类型的存储过程,它在指定的事件发生时自动执行。触发器可以在数据库表中的数据发生更改之前、之后或替代发生更改...
    99+
    2023-10-12
    mysql
  • java触发器的作用是什么
    Java触发器的作用是在特定的条件下自动触发一系列的操作或任务。它们可以用于实现任务调度、事件监听和反应等功能。具体来说,Java触...
    99+
    2023-08-25
    java
  • mysql有没有触发器
    这篇文章主要介绍“mysql有没有触发器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql有没有触发器”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • SQL触发器的作用是什么
    本篇文章为大家展示了SQL触发器的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。触发器的作用  1、安全性,可以基于数据库的值使用户具有操作数据库的某种权...
    99+
    2024-04-02
  • oracle触发器的作用是什么
    Oracle触发器是一种特殊的存储过程,它与表相关联,可以在特定的事件发生时自动触发执行。Oracle触发器的作用包括: 数据完...
    99+
    2024-04-09
    oracle
  • SqlServer中触发器的作用是什么
    这期内容当中小编将会给大家带来有关SqlServer中触发器的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查询数据库中所有触发器:select&nb...
    99+
    2024-04-02
  • mysql触发器怎么用
    这篇文章给大家分享的是有关mysql触发器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明触发器也是存储过程程序的一种,而触发器内部的执行SQL语句是可以多行操作的。在MySQL的存储过程程序中,要定义结...
    99+
    2023-06-20
  • mysql触发器指的是什么
    这篇文章主要介绍了mysql触发器指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明触发器是MySQL向程序员和数据分析员提供保证数据完整性的方法,是与手表事件相关...
    99+
    2023-06-20
  • 数据库中触发器有什么用
    这篇文章主要介绍了数据库中触发器有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。触发器有两个稳态,可分别表示二进制数码0和1,无外触发...
    99+
    2024-04-02
  • mysql中有哪些触发器
    这篇文章主要介绍了mysql中有哪些触发器,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql触发器有六种,分别是:1、Before Ins...
    99+
    2024-04-02
  • MySQL | MySQL触发器
    目录 一、创建触发器 1.2 创建只有一个执行语句的触发器 1.2 创建有多个执行语句的触发器 二、查看触发器 2.1 利用SHOW TRIGGERS语句查看触发器信息 2.2 在triggers表中查看触发器信息 三、删除触发器 一、创...
    99+
    2023-09-02
    数据库 sql mysql 数据库开发 数据库架构
  • mysql触发器的概念是什么
    本篇内容介绍了“mysql触发器的概念是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • MySQL 触发器
    文章目录 1.简介2.行级与语句级触发器3.触发时机4.触发器优缺点5.创建触发器语法示例 6.查看触发器7.删除触发器参考文献 1.简介 触发器(Trigger)是与表关联的命名数据库对象,当表发生特定事件时激活。 触发器...
    99+
    2023-08-30
    mysql 触发器
  • mysql触发器之触发器的增删改查操作示例
    本文实例讲述了mysql触发器之触发器的增删改查操作。分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: ...
    99+
    2024-04-02
  • MySQL的触发器的原理是什么
    这期内容当中小编将会给大家带来有关MySQL的触发器的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、触发器的概念触发器(trigger)是MySQL提供给程...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作