search

mysql---触发器 触发器(trigger)顾名思义可以 监视某种情况,当情况发生时,触发某种操作 应用场景: 1、网购过程中,当提交商品订单时,往订单表中插入新记录,触发对应商品表的库存做出相应减少。 2、支付过程中,确认支付时触发验证卡上余额。 等等 以网

mysql---触发器

触发器(trigger)顾名思义可以监视某种情况,当情况发生时,触发某种操作

应用场景:

1、网购过程中,当提交商品订单时,往订单表中插入新记录,触发对应商品表的库存做出相应减少。

2、支付过程中,确认支付时触发验证卡上余额。

等等

以网购的情况举例说明触发器的作用:

现有商品表(goods),包括商品id(goods_id),商品名(goods_name),库存数量(goods_name)


还有订单表(order_table),包括商品id(goods_id),购买数量(buy_num)


如果往订单表中插入一行记录


代表用户购买了20个商品id为1的商品,即购买了20台小米手机

与此同时,在逻辑上goods表中小米手机的库存也应该减去20台。


这两步其实应该是一个整体,而我们现在是手工操作。如何让第一步完成后,第二步自动执行呢?

这就可以用到触发器的概念。第一条插入语句的执行,触发了第二条修改库存的SQL


触发器四要素:

监视地点、监视事件、触发时间、触发事件


监视地点:触发器监视的对象是

监视事件:触发器监视的事件只能是增、删、改

触发时间:在监视事件之前还是之后

触发事件:也只能是增、删、改

查看当前已有的触发器:

show triggers;


触发器的创建:

create trigger 触发器名称
after/befor (触发时间)
insert/update/delete (监视事件)
on  表名 (监视地址) 
for each row
begin
sql1;
..
sqlN;
end

需要注意点 是,所需要触发的SQL语句都要以‘;’结束。end后面也需要有分界符,但不能再是';'。所以创建触发器之前需要先修改分界符

delimiter 分界符


现在利用触发器对上面的例子进行修改


这个触发器以完成:当订购了20个商品id为1的商品时,goods表的库存会同步减去20。我们来看看效果


商品id为1的商品库存的确减去了20。触发器的确完成了任务,但这个触发器并不智能,他只能处理商品id为1,购买数量为20的情况。要想应对其他情况需要获得提交订单的记录才行。


触发器引用行变量:


对于insert,插入一行后出现了一个新行用new表示,在触发器中可以通过new.列名来引用插入行各个字段的值

对于delete,删除一行后之前的那行不见了,用old表示,在触发器中可以通过old.列名来引用被删除行各个字段的值

对于update,修改一行后旧的一样用old表示,新的一行用new表示,在触发器中可以通过new.列名来引用修改后行各个字段的值,old.列名来引用修改前各个字段的值。

知道这些后,对触发器进行进一步修改



再看一下效果

没有提交订单前商品表的情况

提交两个订单

商品表变化


可见触发器的确发生了作用


触发器after和before的区别:

after是先完成增删改再触发

before是在增删改之前将以判断

前面已经讨论过after的情况,现在如果提交了一个订单购买了100个id为4的商品,然而三星手机库存仅有30个。如果按照上面的触发器,最后库存会变成-70。这显然是不对的,所以这时候可以利用before来对输入进行判断,如果购买数量大于库存则只能购买所剩下的商品。



现在购买100个id为4的商品

再看看订单表


实际购买的只有30而不是100

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何隐藏文本直到在 Powerpoint 中单击如何隐藏文本直到在 Powerpoint 中单击Apr 14, 2023 pm 04:40 PM

如何在 PowerPoint 中的任何点击之前隐藏文本如果您希望在单击 PowerPoint 幻灯片上的任意位置时显示文本,那么设置起来既快速又容易。要在 PowerPoint 中单击任何按钮之前隐藏文本:打开您的 PowerPoint 文档,然后单击“插入 ”菜单。单击新幻灯片。选择空白或其他预设之一。仍然在插入菜单中,单击文本框。在幻灯片上拖出一个文本框。单击文本框并输入您

oracle如何添加触发器oracle如何添加触发器Dec 12, 2023 am 10:17 AM

在Oracle数据库中,您可以使用CREATE TRIGGER语句来添加触发器。触发器是一种数据库对象,它可以在数据库表上定义一个或多个事件,并在事件发生时自动执行相应的操作。

如何在MySQL中使用PHP编写触发器如何在MySQL中使用PHP编写触发器Sep 21, 2023 am 08:16 AM

如何在MySQL中使用PHP编写触发器MySQL是一种常用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。在MySQL中使用PHP编写触发器可以帮助我们实现自动化的数据库操作。本文将介绍如何使用PHP来编写MySQL触发器,并提供具体的代码示例。在开始之前,确保已经安装了MySQL和PHP,并且已经建立了相应的数据库表。一、创建PHP文件和数据

mysql的触发器是什么级的mysql的触发器是什么级的Mar 30, 2023 pm 08:05 PM

mysql的触发器是行级的。按照SQL标准,触发器可以分为两种:1、行级触发器,对于修改的每一行数据都会激活一次,如果一个语句插入了100行数据,将会调用触发器100次;2、语句级触发器,针对每个语句激活一次,一个插入100行数据的语句只会调用一次触发器。而MySQL中只支持行级触发器,不支持预语句级触发器。

如何使用MySQL的触发器实现数据的自动归档如何使用MySQL的触发器实现数据的自动归档Aug 02, 2023 am 10:37 AM

如何使用MySQL的触发器实现数据的自动归档引言:在现代数据管理领域,数据的自动归档和清理是一个重要而又常见的需求。随着数据量的增加,保留完整的历史数据会占用过多的存储资源,并且会降低查询性能。MySQL的触发器提供了实现这一需求的有效方法。本文将介绍如何使用MySQL的触发器来实现数据的自动归档。一、什么是MySQL的触发器MySQL的触发器是一种特殊的存

如何在MySQL中使用Python编写自定义触发器如何在MySQL中使用Python编写自定义触发器Sep 20, 2023 am 11:04 AM

如何在MySQL中使用Python编写自定义触发器触发器是MySQL中的一种强大的功能,它可以在数据库中的表上定义一些自动执行的操作。而Python则是一种简洁而强大的编程语言,能够方便地与MySQL进行交互。本文将介绍如何使用Python编写自定义触发器,并提供具体的代码示例。首先,我们需要安装并导入PyMySQL库,它是Python与MySQL数据库进行

如何在MySQL中使用PHP编写自定义触发器和存储过程如何在MySQL中使用PHP编写自定义触发器和存储过程Sep 20, 2023 am 11:25 AM

如何在MySQL中使用PHP编写自定义触发器和存储过程引言:在开发应用程序时,我们经常需要在数据库层面进行一些操作,如插入、更新或删除数据。MySQL是一个广泛使用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。本文将介绍如何在MySQL中使用PHP编写自定义触发器和存储过程,并提供具体的代码示例。一、什么是触发器和存储过程触发器(Trigg

如何在MySQL中使用C#编写自定义存储过程、触发器和函数如何在MySQL中使用C#编写自定义存储过程、触发器和函数Sep 20, 2023 pm 12:04 PM

如何在MySQL中使用C#编写自定义存储过程、触发器和函数MySQL是一种广泛使用的开源关系型数据库管理系统,而C#是一种强大的编程语言,对于需要与数据库进行交互的开发任务来说,MySQL和C#是很好的选择。在MySQL中,我们可以使用C#编写自定义存储过程、触发器和函数,来实现更加灵活和强大的数据库操作。本文将引导您使用C#编写并执

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),