Maison >base de données >tutoriel mysql >Qu'est-ce qu'un déclencheur dans MySQL
Dans MySQL, un déclencheur est un ensemble d'instructions SQL stockées dans le catalogue de base de données qui sont exécutées ou déclenchées chaque fois qu'un événement associé à une table se produit, comme une insertion, une mise à jour ou une suppression. Les déclencheurs sont étroitement liés aux tables de données et sont principalement utilisés pour protéger les données dans les tables ; en particulier lorsqu'il existe plusieurs tables avec certaines interconnexions, les déclencheurs peuvent maintenir la cohérence des données dans différentes tables. Dans MySQL, les déclencheurs ne peuvent être activés que lors de l'exécution des opérations INSERT, UPDATE et DELETE, et les autres instructions SQL n'activeront pas les déclencheurs.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
Déclencheurs dans MySQL
Dans MySQL, un déclencheur est un ensemble d'instructions SQL stockées dans le répertoire de la base de données Chaque fois qu'un événement associé à une table se produit, un déclencheur est exécuté ou déclenché, tel qu'une insertion, une mise à jour ou. supprimer.
Les déclencheurs MySQL, comme les procédures stockées, sont un programme intégré à MySQL et constituent un outil puissant pour la gestion des données dans MySQL. La différence est que l'exécution d'une procédure stockée nécessite une instruction CALL, tandis que l'exécution d'un déclencheur ne nécessite pas d'instruction CALL ni de démarrage manuel. Au lieu de cela, il est déclenché et activé via des opérations associées sur la table de données pour réaliser l'exécution. Par exemple, son exécution sera activée lorsqu'une opération (INSERT, DELETE ou UPDATE) sera effectuée sur la table étudiant.
Les déclencheurs sont étroitement liés aux tableaux de données et sont principalement utilisés pour protéger les données des tableaux. En particulier lorsqu'il existe plusieurs tables liées les unes aux autres, les déclencheurs peuvent maintenir la cohérence des données entre les différentes tables.
Dans MySQL, les déclencheurs ne peuvent être activés que lors de l'exécution des opérations INSERT, UPDATE et DELETE, les autres instructions SQL n'activeront pas les déclencheurs.
Alors pourquoi utiliser des déclencheurs ? Par exemple, lors du développement de projets, nous rencontrons souvent les situations suivantes :
Lors de l'ajout d'un enregistrement sur les étudiants à la table des étudiants, le nombre total d'étudiants doit changer en même temps.
Lors de l'ajout d'un dossier étudiant, vous devez vérifier si l'âge répond aux exigences de la fourchette.
Lors de la suppression des informations d'un élève, vous devez supprimer l'enregistrement correspondant sur la feuille de score.
Lors de la suppression d'une donnée, vous devez conserver une copie de sauvegarde dans la table d'archive de la base de données.
Bien que la logique métier mise en œuvre dans les situations ci-dessus soit différente, elles doivent toutes effectuer automatiquement un certain traitement lorsque la table de données change. À ce stade, le traitement de déclenchement peut être utilisé. Par exemple, pour le premier cas, vous pouvez créer un objet déclencheur et effectuer une opération pour calculer le nombre total d'élèves à chaque fois qu'un dossier d'élève est ajouté. Cela garantit que chaque fois qu'un dossier d'élève est ajouté, le nombre total d'élèves et. le nombre de dossiers d’élèves est calculé sont cohérents.
Déclencheurs pris en charge par MySQL
En utilisation réelle, MySQL prend en charge trois déclencheurs : le déclencheur INSERT, le déclencheur UPDATE et le déclencheur DELETE.
1) Déclencheur INSERT
Un déclencheur qui répond avant ou après l'exécution de l'instruction INSERT.
Vous devez faire attention aux points suivants lors de l'utilisation des déclencheurs INSERT :
Dans le code du déclencheur INSERT, vous pouvez référencer une table virtuelle nommée NEW (insensible à la casse) pour accéder à la ligne insérée.
Dans le déclencheur BEFORE INSERT, la valeur dans NEW peut également être mise à jour, ce qui permet de modifier la valeur insérée (à condition qu'elle dispose des autorisations d'opération correspondantes).
Pour la colonne AUTO_INCREMENT, NEW contient la valeur 0 avant l'exécution de l'INSERT, et contiendra la nouvelle valeur générée automatiquement après l'exécution de l'INSERT.
2) Déclencheur UPDATE
Un déclencheur qui répond avant ou après l'exécution de l'instruction UPDATE.
Soyez conscient des points suivants lorsque vous utilisez des déclencheurs UPDATE :
Dans le code du déclencheur UPDATE, une table virtuelle nommée NEW (insensible à la casse) peut être référencée pour accéder à la valeur mise à jour.
Dans le code du déclencheur UPDATE, une table virtuelle nommée OLD (insensible à la casse) peut être référencée pour accéder à la valeur avant l'exécution de l'instruction UPDATE.
Dans le déclencheur BEFORE UPDATE, la valeur dans NEW peut également être mise à jour, ce qui permet de modifier la valeur à utiliser dans l'instruction UPDATE (à condition que vous disposiez des autorisations d'opération correspondantes). Toutes les valeurs dans
OLD sont en lecture seule et ne peuvent pas être mises à jour.
Remarque : Lorsque le déclencheur est conçu pour déclencher l'opération de mise à jour de la table elle-même, seuls les déclencheurs de type AVANT peuvent être utilisés, et les déclencheurs de type APRÈS ne seront pas autorisés.
3) Déclencheur DELETE
Un déclencheur qui répond avant ou après l'exécution de l'instruction DELETE.
Vous devez faire attention aux points suivants lorsque vous utilisez les déclencheurs DELETE :
Dans le code du déclencheur DELETE, vous pouvez référencer une table virtuelle nommée OLD (insensible à la casse) pour accéder aux lignes supprimées. Toutes les valeurs dans
OLD sont en lecture seule et ne peuvent pas être mises à jour.
De manière générale, lors de l'utilisation des déclencheurs, MySQL gérera les erreurs des manières suivantes.
Pour les tables transactionnelles, si le déclencheur échoue et que l'instruction entière échoue en conséquence, toutes les modifications effectuées par l'instruction seront annulées ; pour les tables non transactionnelles, une telle annulation ne peut pas être effectuée, même si l'instruction échoue. effectués avant la panne sont toujours en vigueur.
Si le déclencheur BEFORE échoue, MySQL n'effectuera pas l'opération sur la ligne correspondante.
Si une erreur se produit lors de l'exécution du programme déclencheur AVANT ou APRES, cela entraînera l'échec de l'intégralité de l'instruction appelant le programme déclencheur.
MySQL exécutera le déclencheur AFTER uniquement si le déclencheur BEFORE et l'opération sur la ligne ont été exécutés avec succès.
【Recommandation associée : tutoriel vidéo mysql】
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!