MySQL - CREATE TRIGGER : Guide pour débutants
Salut à toi, aspirant passionné de bases de données ! Aujourd'hui, nous allons plonger dans le monde fascinant des déclencheurs MySQL. Ne t'inquiète pas si tu es nouveau dans la programmation ; je serai ton guide amical tout au long de ce voyage. À la fin de ce tutoriel, tu seras capable de créer des déclencheurs comme un pro !
Qu'est-ce qu'un déclencheur ?
Avant de se lancer dans la création de déclencheurs, comprens ce qu'ils sont. Imagine que tu as un chien fidèle qui aboie toujours quand quelqu'un sonne à la porte. Dans le monde des bases de données, un déclencheur est comme ce chien - une réponse automatique à un événement spécifique dans ta base de données.
Définition
Un déclencheur est un objet de base de données nommé associé à une table et activé automatiquement lorsque se produit un événement spécifique pour cette table.
Créer des déclencheurs dans MySQL
Maintenant que nous savons ce qu'est un déclencheur, apprenons comment les créer dans MySQL. C'est comme apprendre un nouveau sortilège, mais au lieu de secouer une baguette, nous taperons des commandes !
Syntaxe de base
Voici la structure de base d'une instruction CREATE TRIGGER
:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
FOR EACH ROW
trigger_body;
Décomposons cela :
-
trigger_name
: C'est ce que tu appelleras ton déclencheur. Choisis un nom qui décrit ce qu'il fait. -
{BEFORE | AFTER}
: Cela détermine quand le déclencheur s'active - avant ou après l'événement spécifié. -
{INSERT | UPDATE | DELETE}
: C'est l'événement qui active le déclencheur. -
table_name
: La table associée au déclencheur. -
FOR EACH ROW
: Cela signifie que le déclencheur s'active pour chaque rangée affectée par l'événement. -
trigger_body
: Les instructions SQL à exécuter lorsque le déclencheur s'active.
Exemple 1 : Déclencheur BEFORE INSERT
Créons un déclencheur qui assure que tous les noms des employés sont en majuscules avant qu'ils ne soient insérés dans la table.
CREATE TRIGGER capitalize_name
BEFORE INSERT ON employees
FOR EACH ROW
SET NEW.name = UPPER(NEW.name);
Dans cet exemple :
- Le déclencheur est nommé
capitalize_name
. - Il s'active BEFORE une opération INSERT sur la table
employees
. - Pour chaque nouvelle rangée, il met en majuscules la colonne
name
en utilisant la fonctionUPPER()
. -
NEW
se réfère à la nouvelle rangée être insérée.
Exemple 2 : Déclencheur AFTER UPDATE
Maintenant, créons un déclencheur qui enregistre les changements de salaire dans une table distincte.
CREATE TRIGGER log_salary_changes
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF OLD.salary <> NEW.salary THEN
INSERT INTO salary_log (employee_id, old_salary, new_salary, change_date)
VALUES (NEW.id, OLD.salary, NEW.salary, NOW());
END IF;
END;
Voici ce qui se passe :
- Le déclencheur est nommé
log_salary_changes
. - Il s'active AFTER une opération UPDATE sur la table
employees
. - Il vérifie si le salaire a changé (
OLD.salary <> NEW.salary
). - Si il y a un changement, il insère un enregistrement dans la table
salary_log
. -
OLD
se réfère à la rangée avant la mise à jour, etNEW
à la rangée après la mise à jour.
Créer des déclencheurs à l'aide d'un programme client
Bien que nous puissions créer des déclencheurs directement dans MySQL, il est parfois plus pratique d'utiliser un programme client. Voyons comment faire cela en utilisant le client en ligne de commande MySQL.
Étape 1 : Se connecter à MySQL
Premièrement, ouvre ton terminal ou invite de commande et connecte-toi à MySQL :
mysql -u username -p
Remplace username
par ton nom d'utilisateur MySQL. Tu seras invité à entrer ton mot de passe.
Étape 2 : Sélectionner la base de données
Une fois connecté, sélectionne la base de données avec laquelle tu veux travailler :
USE your_database_name;
Étape 3 : Créer le déclencheur
Maintenant, tu peux créer ton déclencheur. Utilisons notre exemple de journal des salaires :
DELIMITER //
CREATE TRIGGER log_salary_changes
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF OLD.salary <> NEW.salary THEN
INSERT INTO salary_log (employee_id, old_salary, new_salary, change_date)
VALUES (NEW.id, OLD.salary, NEW.salary, NOW());
END IF;
END//
DELIMITER ;
Note l'utilisation de DELIMITER //
et DELIMITER ;
. Cela est dû au fait que notre corps de déclencheur contient des points-virgules, donc nous devons temporairement changer le délimiteur.
Étape 4 : Vérifier le déclencheur
Pour t'assurer que ton déclencheur a été créé avec succès, tu peux utiliser :
SHOW TRIGGERS;
Cela affichera tous les déclencheurs de la base de données actuelle.
Méthodes de déclencheurs
Voici un tableau des méthodes de déclencheurs les plus courantes dans MySQL :
Méthode | Description |
---|---|
BEFORE INSERT | S'active avant qu'une nouvelle rangée soit insérée |
AFTER INSERT | S'active après qu'une nouvelle rangée soit insérée |
BEFORE UPDATE | S'active avant qu'une rangée existante soit mise à jour |
AFTER UPDATE | S'active après qu'une rangée existante soit mise à jour |
BEFORE DELETE | S'active avant qu'une rangée existante soit supprimée |
AFTER DELETE | S'active après qu'une rangée existante soit supprimée |
Souviens-toi, chacun de ces peut être un outil puissant lorsqu'il est utilisé correctement. C'est comme avoir un couteau suisse pour ta base de données !
Conclusion
Félicitations ! Tu viens de faire tes premiers pas dans le monde des déclencheurs MySQL. Nous avons couvert ce qu'est un déclencheur, comment les créer, et même comment les utiliser avec un programme client. Souviens-toi, comme avec tout outil puissant, les déclencheurs devraient être utilisés avec sagesse. Ils peuvent grandement améliorer tes opérations de base de données, mais les utiliser en excès peut entraîner de la complexité et des problèmes de performance.
While continuant ton voyage avec MySQL, continue de pratiquer et d'expérimenter avec les déclencheurs. Bientôt, tu seras capable de créer des magies de base de données qui ferait même jalouser Merlin ! Bon codage, et puissent tes requêtes toujours retourner les résultats que tu attendras !
Credits: Image by storyset