Maison > Article > base de données > Questions sur les déclencheurs MySQL
Un déclencheur dans Mysql est un objet de base de données lié aux opérations de table lorsqu'un événement spécifié se produit sur la table où se trouve le déclencheur. sera appelé L'objet, c'est-à-dire l'événement d'opération de la table déclenche l'exécution du déclencheur sur la table.
Parfois, lorsque vous modifiez certaines données dans une table, vous souhaitez également que les données d'autres tables associées changent également. L'utilisation de déclencheurs peut répondre à de tels besoins. L'utilisation de déclencheurs peut simplifier le programme et augmenter la flexibilité du programme.
La syntaxe de création d'un déclencheur est la suivante :
create trigger name(触发器名称) after/befor(触发时间) insert/update/delete(触发事件,当填写其中一种,其它的操作不会激活触发器) on (监视的表,即在哪张表上建立触发器 ) for each row (行级触发器) begin (sql语句,希望改变的数据,可写多条语句,每条语句必须用 ; 结尾) end;
L'instruction SQL ci-dessus sera exécutée après l'écriture de ;. Une erreur sera signalée avant que le déclencheur ne soit terminé !
La commande DELIMITER sera utilisée à ce moment (le délimiteur est le délimiteur, la signification du séparateur. C'est une commande et ne nécessite pas d'identifiant de fin d'instruction). la syntaxe est :
DELIMITER ;; (l'identifiant de fin de mysql peut être défini sur d'autres symboles, tels que ;; ou $ peut également être défini sur plusieurs longueurs)
Après cette instruction, le déclencheur ne réagira pas s'il se termine par un point-virgule. Ce n'est que lorsque ;; est rencontré qu'il est considéré comme la fin de l'instruction. Remarque : après l'avoir utilisé, n'oubliez pas de le modifier à nouveau !
Supposons qu'il y ait deux tables dans le système :
table de produits marchandises (identifiant du produit gid, nom du produit nom_produit, quantité de produit marchandises_num)
table de commande ord (oid de la commande, identifiant du produit gid , Quantité commandée marchandises_much )
Pour créer un déclencheur pour mettre à jour automatiquement la quantité de marchandises dans la table des produits avec la quantité commandée dans la table des commandes, le code est le suivant :
delmiter $ #判断库存是否足够 create trigger t1 before insert on ord for each row begin #声明变量 declare goods_num int; select num into goods_num from goods where gid = new.gid; #判断 if new.much > goods_num then set new.much = goods_num; end if; update goods set num = num - new.much where gid=new.gid end$ delmiter ;
Utilisez déclarer dans MySQL pour définir une variable locale, cette variable ne peut être utilisée que dans l'instruction composée BEGIN ... END et doit être définie au début de l'instruction composée
Le mot-clé NEW est utilisé dans l'exemple ci-dessus. , qui est similaire à INSERTED et DELETED dans MS SQL Server. MySQL NEW et OLD sont définis dans pour représenter la ligne de données dans la table où se trouve le déclencheur qui a déclenché le déclencheur.
Plus précisément :
Dans les déclencheurs de type INSERT, NEW est utilisé pour représenter les nouvelles données qui seront (AVANT) ou ont été insérées (APRÈS)
Dans les déclencheurs de type UPDATE, OLD est utilisé pour représenter ce qui sera ; ou Les données originales qui ont été modifiées, NEW est utilisé pour représenter les nouvelles données qui seront ou ont été modifiées
Dans le déclencheur de type DELETE, OLD est utilisé pour représenter les données originales qui seront ou ont été supprimées ;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!