Mettre à jour la logique du déclencheur
Vos exigences peuvent changer avec le temps. Par exemple, vous pourriez vouloir enregistrer plus de détails. Dans cette étape, vous allez mettre à jour le déclencheur pour qu'il enregistre également le prix du nouveau produit.
Dans MySQL, vous ne pouvez pas modifier directement un déclencheur. Vous devez d'abord supprimer le déclencheur existant, puis en créer un nouveau avec la logique mise à jour.
Basculez vers votre base de données.
USE mydatabase;
Tout d'abord, supprimez le déclencheur existant. La clause IF EXISTS empêche une erreur si le déclencheur a déjà été supprimé.
DROP TRIGGER IF EXISTS products_after_insert;
Maintenant, recréez le déclencheur avec la logique mise à jour. Cette nouvelle version inclura le prix du produit dans la action_description.
DELIMITER //
CREATE TRIGGER products_after_insert
AFTER INSERT ON products
FOR EACH ROW
BEGIN
INSERT INTO product_logs (product_id, action_description)
VALUES (NEW.id, CONCAT('New product added: ', NEW.name, ' with price ', NEW.price));
END//
DELIMITER ;
Pour tester le déclencheur mis à jour, insérez un autre produit.
INSERT INTO products (name, price) VALUES ('Mouse', 25.00);
Maintenant, interrogez la table product_logs pour voir toutes les entrées du journal.
SELECT * FROM product_logs;
La sortie devrait maintenant afficher deux entrées de journal. La deuxième entrée, pour la 'Mouse', devrait inclure le prix dans sa description, confirmant que votre déclencheur mis à jour fonctionne.
+--------+------------+----------------------------------------------+---------------------+
| log_id | product_id | action_description | log_time |
+--------+------------+----------------------------------------------+---------------------+
| 1 | 1 | New product added: Laptop | 2024-05-27 10:30:00 |
| 2 | 2 | New product added: Mouse with price 25.00 | 2024-05-27 10:35:00 |
+--------+------------+----------------------------------------------+---------------------+
2 rows in set (0.00 sec)
Vous avez mis à jour le déclencheur avec succès.