Maison  >  Article  >  base de données  >  Introduction aux déclencheurs MySQL et comment créer et supprimer des déclencheurs

Introduction aux déclencheurs MySQL et comment créer et supprimer des déclencheurs

巴扎黑
巴扎黑original
2017-05-19 15:27:443096parcourir

Que sont les déclencheurs MySQL

Nécessite MySQL 5. La prise en charge des déclencheurs a été ajoutée dans MySQL 5. Par conséquent, le contenu de ce chapitre s'applique à MySQL 5 ou aux versions ultérieures.

Les instructions MySQL sont exécutées en cas de besoin, tout comme les procédures stockées. Mais que se passe-t-il si vous souhaitez qu'une certaine instruction (ou plusieurs instructions) s'exécute automatiquement lorsqu'un événement se produit ? Par exemple :

1. Chaque fois qu'un client est ajouté à une table de base de données, vérifiez si le format du numéro de téléphone est correct et si l'abréviation de l'état est en majuscules

2. est commandé Lorsqu'un produit est ajouté, la quantité commandée est soustraite de la quantité en stock

3. Chaque fois qu'une ligne est supprimée, une copie est conservée dans un tableau d'archives ;

Ce que tous ces exemples ont en commun, c'est qu'ils doivent tous gérer automatiquement lorsqu'une certaine table change. C’est littéralement le déclencheur. Un déclencheur est une instruction MySQL (ou un groupe d'instructions entre les instructions BEGIN et END) que MySQL exécute automatiquement en réponse à l'une des instructions suivantes :

1.DELETE; INSÉRER ;

3.MISE À JOUR.

Les autres instructions MySQL ne prennent pas en charge les déclencheurs.


Créer un déclencheur mysql

Lors de la création d'un déclencheur, 4 informations doivent être renseignées :

1. Le nom unique du déclencheur ;

2. La table associée au déclencheur

3. L'activité à laquelle le déclencheur doit répondre (DELETE, INSERT ou UPDATE) ;

4. Quand le déclencheur s'exécute-t-il (avant ou après le traitement).

Garder les noms de déclencheurs uniques par base de données Dans MySQL 5, les noms de déclencheurs doivent être uniques par table, mais pas par base de données. Cela signifie que deux tables de la même base de données peuvent avoir des déclencheurs portant le même nom. Cela n'est pas autorisé dans d'autres SGBD où chaque nom de déclencheur de base de données doit être unique, et les futures versions de MySQL rendront probablement les règles de dénomination plus strictes. Par conséquent, il est désormais préférable d’utiliser des noms de déclencheurs uniques dans la portée de la base de données.

Les déclencheurs sont créés avec l'instruction CREATE TRIGGER. Voici un exemple simple :

Entrée :

Analyse : CREATE TRIGGER est utilisé pour créer un nouveau déclencheur nommé newproduct. Les déclencheurs peuvent être exécutés avant ou après qu'une opération se produise, ici APRÈS INSERT est donné, donc ce déclencheur s'exécutera après l'exécution réussie de l'instruction INSERT. Ce déclencheur spécifie également FOR EACH ROW, de sorte que le code s'exécute pour chaque ligne insérée. Dans cet exemple, le texte Produit ajouté apparaîtra une fois pour chaque ligne insérée. Pour tester ce déclencheur, utilisez une instruction INSERT pour ajouter une ou plusieurs lignes aux produits
create trigger newproduct after insert on proucts for each row select 'product added';

Vous verrez un message Produit ajouté affiché pour chaque insertion réussie.

Prend en charge uniquement les tables. Seules les tables prennent en charge les déclencheurs, les vues ne les prennent pas en charge (les tables temporaires ne les prennent pas non plus en charge).

Les déclencheurs sont définis par événement et par table, et un seul déclencheur par événement et par table est autorisé à la fois. Par conséquent, chaque table prend en charge jusqu'à 6 déclencheurs (avant et après chaque INSERT , UPDATE et DELETE ). Un seul déclencheur ne peut pas être associé à plusieurs événements ou à plusieurs tables, donc si vous avez besoin d'un déclencheur qui s'exécute sur les opérations INSERT et UPDATE, vous devez définir

deux déclencheurs.

Échec du déclencheur Si le déclencheur BEFORE échoue, MySQL n'effectuera pas l'opération demandée. De plus, si le déclencheur BEFORE ou l'instruction elle-même échoue, MySQL n'exécutera pas le déclencheur AFTER (le cas échéant).

Supprimer le déclencheur mysql

Maintenant, la syntaxe pour supprimer un déclencheur devrait être évidente. Pour supprimer un déclencheur, utilisez l'instruction DROP TRIGGER comme suit :

Entrée :

Analyse : les déclencheurs ne peuvent pas être mis à jour ou écrasés. Afin de modifier un déclencheur, il doit être supprimé puis recréé.
drop trigger newproduct ;

[Recommandations associées]

1.

Tutoriel vidéo gratuit MySQL

2

Tutoriel d'utilisation du jeu de caractères MySQL et de la commande de relecture

. 3.

Introduction au jeu de caractères MySQL et à l'ordre de classement

4

Explication détaillée des transactions MySQL sur l'utilisation des points de rétention et la modification du comportement de validation par défaut

5. Transaction MySQL-ROLLBACK, explication détaillée de l'utilisation de COMMIT

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