Maison >base de données >tutoriel mysql >Comment écrire un déclencheur MySQL

Comment écrire un déclencheur MySQL

(*-*)浩
(*-*)浩original
2019-05-17 11:08:5616951parcourir

Un déclencheur est un objet de base de données lié à une table de données MySQL. Il est déclenché lorsque les conditions définies sont remplies et exécute l'ensemble d'instructions défini dans le déclencheur. Cette fonctionnalité des déclencheurs peut aider les applications à garantir l’intégrité des données côté base de données.

Comment écrire un déclencheur MySQL

Le format de syntaxe est le suivant :

CREATE <触发器名> < BEFORE | AFTER >
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>

La description de la syntaxe est la suivante.

1) Nom du déclencheur

Le nom du déclencheur Le déclencheur doit avoir un nom unique dans la base de données actuelle. Si vous créez dans une base de données spécifique, le nom doit être précédé du nom de la base de données.

2) INSERT | UPDATE | DELETE

événement déclencheur, utilisé pour spécifier le type d'instruction qui active le déclencheur.

Remarque : Le temps d'exécution des trois déclencheurs est le suivant. INSERT : Déclencheur activé lorsqu'une nouvelle ligne est insérée dans le tableau. Par exemple, le déclencheur BEFORE de INSERT peut être activé non seulement par l'instruction INSERT de MySQL, mais également par l'instruction LOAD DATA. DELETE : les déclencheurs sont activés lorsqu'une ligne de données est supprimée de la table, telles que les instructions DELETE et REPLACE. UPDATE : un déclencheur est activé lorsqu'une ligne de données dans la table est modifiée, comme une instruction UPDATE.

3) AVANT | APRÈS

AVANT et APRÈS, le moment où le déclencheur est déclenché, indiquent si le déclencheur est déclenché avant ou après l'instruction qui l'active. Si vous souhaitez vérifier que les nouvelles données remplissent les conditions, utilisez l'option AVANT ; si vous souhaitez effectuer plusieurs modifications ou plus après l'exécution de l'instruction qui active le déclencheur, vous utilisez généralement l'option APRÈS.

4) Nom de la table

Le nom de la table associée au déclencheur Cette table doit être une table permanente. Les déclencheurs ne peuvent pas être associés à des tables ou des vues temporaires. Le déclencheur est activé lorsqu'un événement déclencheur se produit sur la table. La même table ne peut pas avoir deux déclencheurs avec le même temps de déclenchement et le même événement. Par exemple, pour une table de données, vous ne pouvez pas avoir deux déclencheurs BEFORE UPDATE en même temps, mais vous pouvez avoir un déclencheur BEFORE UPDATE et un déclencheur BEFORE INSERT, ou un déclencheur BEFORE UPDATE et un déclencheur AFTER UPDATE.

5) Corps du déclencheur

Corps de l'action du déclencheur, y compris l'instruction MySQL qui sera exécutée lorsque le déclencheur est activé. Si vous souhaitez exécuter plusieurs instructions, vous pouvez utiliser la structure d'instruction composée BEGIN…END.

6) POUR CHAQUE LIGNE

fait généralement référence au déclenchement au niveau de la ligne, et l'action de déclenchement doit être activée pour chaque ligne affectée par l'événement déclencheur. Par exemple, lorsque vous utilisez l'instruction INSERT pour insérer plusieurs lignes de données dans une table, le déclencheur exécutera l'action de déclenchement correspondante pour chaque ligne de données insérée.

Remarque : Chaque table prend en charge AVANT et APRÈS pour INSERT, UPDATE et DELETE, de sorte que chaque table prend en charge jusqu'à 6 déclencheurs. Un seul déclencheur est autorisé par événement et par table à la fois. Un seul déclencheur ne peut pas être associé à plusieurs événements ou à plusieurs tables.

De plus, dans MySQL, si vous avez besoin d'afficher les déclencheurs existants dans la base de données, vous pouvez utiliser l'instruction SHOW TRIGGERS.

Exemple :

BEGIN    
IF new.state  in ('2','3')  then  
  INSERT INTO `userservice`.`ehome_us_green_examine` 
(modifydate,modifyuser,brancCode,stateDescription,state,
userID,fromSystemkey,applydate,makeHospitalName,illnessName,
userName,rightsholderName,tranno) 
VALUES ( sysdate(), 'manage', old.brancCode, old.stateDescription, new.state, 
'', old.fromSystemkey, old.applydate,old.makeHospitalName,old.illnessName,
old.userName,old.rightsholderName, old.tranno);
END IF;  
END

Ce déclencheur est relativement simple,

1 BEGIN à END, entre lesquels se trouve la base de données. Opérations

2. Entre SI et FIN SI c'est le jugement Ce que vous pensez être juste c'est si. . . La signification de

3. new.state dans ('2','3') La signification de cette phrase est : lorsque l'état du champ de la table est (2 ou 3)

4. Exécutez l'instruction d'insertion suivante, new est la nouvelle valeur et old est la valeur d'origine (par exemple, old.userName est la valeur d'origine de ce champ)

5. L'intégralité du déclencheur est traduite en langue vernaculaire. , si l'état de la table devient 2 ou 3, exécutez l'instruction d'insertion suivante

Remarque : le déclencheur se produit-il avant ou après le changement d'état ? Choisissez Avant ou Après, comme son nom l'indique !

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!

Déclaration:
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