mysql-触发器

Jun 07, 2016 pm 04:27 PM
触发器

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment masquer le texte jusqu'à ce qu'on clique dessus dans Powerpoint Comment masquer le texte jusqu'à ce qu'on clique dessus dans Powerpoint Apr 14, 2023 pm 04:40 PM

Comment masquer le texte avant tout clic dans PowerPoint Si vous souhaitez que le texte apparaisse lorsque vous cliquez n'importe où sur une diapositive PowerPoint, sa configuration est simple et rapide. Pour masquer du texte avant de cliquer sur un bouton dans PowerPoint : Ouvrez votre document PowerPoint et cliquez sur le menu Insérer. Cliquez sur Nouvelle diapositive. Choisissez Vide ou l’un des autres préréglages. Toujours dans le menu Insertion, cliquez sur Zone de texte. Faites glisser une zone de texte sur la diapositive. Cliquez sur la zone de texte et entrez votre

Comment ajouter un déclencheur dans Oracle Comment ajouter un déclencheur dans Oracle Dec 12, 2023 am 10:17 AM

Dans la base de données Oracle, vous pouvez utiliser l'instruction CREATE TRIGGER pour ajouter des déclencheurs. Un déclencheur est un objet de base de données qui peut définir un ou plusieurs événements sur une table de base de données et exécuter automatiquement les actions correspondantes lorsque l'événement se produit.

Comment écrire des déclencheurs dans MySQL en utilisant PHP Comment écrire des déclencheurs dans MySQL en utilisant PHP Sep 21, 2023 am 08:16 AM

Comment écrire des déclencheurs dans MySQL à l'aide de PHP MySQL est un système de gestion de bases de données relationnelles couramment utilisé et PHP est un langage de script côté serveur populaire. Utiliser PHP pour écrire des déclencheurs dans MySQL peut nous aider à réaliser des opérations de base de données automatisées. Cet article explique comment utiliser PHP pour écrire des déclencheurs MySQL et fournit des exemples de code spécifiques. Avant de commencer, assurez-vous que MySQL et PHP ont été installés et que les tables de base de données correspondantes ont été créées. 1. Créez des fichiers et des données PHP

Quel est le niveau de déclenchement de MySQL ? Quel est le niveau de déclenchement de MySQL ? Mar 30, 2023 pm 08:05 PM

Les déclencheurs MySQL sont au niveau de la ligne. Selon les standards SQL, les déclencheurs peuvent être divisés en deux types : 1. Les déclencheurs au niveau de la ligne, qui seront activés une fois pour chaque ligne de données modifiées. Si une instruction insère 100 lignes de données, le déclencheur sera appelé 100 fois ; . Déclencheurs au niveau de l'instruction Le déclencheur est activé une fois pour chaque instruction. Une instruction qui insère 100 lignes de données n'appellera le déclencheur qu'une seule fois. MySQL ne prend en charge que les déclencheurs au niveau des lignes, pas les déclencheurs au niveau des instructions préparées.

Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Sep 20, 2023 am 11:04 AM

Comment écrire des déclencheurs personnalisés dans MySQL à l'aide de Python Les déclencheurs sont une fonctionnalité puissante de MySQL qui peut définir certaines opérations exécutées automatiquement sur les tables de la base de données. Python est un langage de programmation concis et puissant qui peut facilement interagir avec MySQL. Cet article explique comment écrire des déclencheurs personnalisés à l'aide de Python et fournit des exemples de code spécifiques. Tout d'abord, nous devons installer et importer la bibliothèque PyMySQL, qui est la manière dont Python travaille avec une base de données MySQL.

Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Sep 20, 2023 am 11:25 AM

Comment écrire des déclencheurs personnalisés et des procédures stockées dans MySQL à l'aide de PHP Introduction : Lors du développement d'applications, nous devons souvent effectuer certaines opérations au niveau de la base de données, telles que l'insertion, la mise à jour ou la suppression de données. MySQL est un système de gestion de bases de données relationnelles largement utilisé et PHP est un langage de script côté serveur populaire. Cet article explique comment utiliser PHP pour écrire des déclencheurs personnalisés et des procédures stockées dans MySQL, et fournit des exemples de code spécifiques. 1. Que sont les déclencheurs et les déclencheurs de procédures stockées (Trigg

Comment écrire des procédures stockées, des déclencheurs et des fonctions personnalisés dans MySQL en utilisant C# Comment écrire des procédures stockées, des déclencheurs et des fonctions personnalisés dans MySQL en utilisant C# Sep 20, 2023 pm 12:04 PM

Comment écrire des procédures stockées, des déclencheurs et des fonctions personnalisés dans MySQL à l'aide de C# MySQL est un système de gestion de base de données relationnelle open source largement utilisé, et C# est un langage de programmation puissant pour les tâches de développement qui nécessitent une interaction avec la base de données. Disons que MySQL et C# sont bons. choix. Dans MySQL, nous pouvons utiliser C# pour écrire des procédures stockées, des déclencheurs et des fonctions personnalisés afin d'obtenir des opérations de base de données plus flexibles et plus puissantes. Cet article vous guidera dans l'utilisation de C# pour écrire et exécuter

Comment utiliser les déclencheurs MySQL pour implémenter l'archivage automatique des données Comment utiliser les déclencheurs MySQL pour implémenter l'archivage automatique des données Aug 02, 2023 am 10:37 AM

Comment utiliser les déclencheurs MySQL pour mettre en œuvre l'archivage automatique des données Introduction : Dans le domaine de la gestion moderne des données, l'archivage et le nettoyage automatiques des données sont une exigence importante et courante. À mesure que la quantité de données augmente, la conservation de données historiques complètes occupera des ressources de stockage excessives et réduira les performances des requêtes. Les déclencheurs MySQL constituent un moyen efficace de répondre à cette exigence. Cet article explique comment utiliser les déclencheurs MySQL pour réaliser un archivage automatique des données. 1. Qu'est-ce qu'un déclencheur MySQL ? Un déclencheur MySQL est un type particulier de mémoire.

See all articles