Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation des déclencheurs MySQL

Cet article décrit comment créer et utiliser des déclencheurs MySQL sur votre compte d'hébergement A2. Les déclencheurs sont des règles prédéfinies associées à une table. Ils peuvent être appelés ("déclenchés") avant ou après qu'une instruction SQL insère, mette à jour ou supprime des données de la table associée.

Vous pouvez utiliser des déclencheurs dans un large éventail de scénarios. Par exemple, vous pouvez utiliser un déclencheur pour modifier automatiquement certaines valeurs lorsqu'une ligne est mise à jour. Ou vous pouvez spécifier un ensemble d'actions à entreprendre chaque fois qu'une ligne est supprimée. Les possibilités sont presque infinies.

Créer et utiliser des déclencheurs

Vous pouvez créer et utiliser des déclencheurs sur n'importe quel serveur d'hébergement A2 qui utilise MySQL.

Configurer une base de données de test

Pour illustrer un exemple de base d'un déclencheur en action, commençons par créer une base de données à des fins de test. Dans l'instruction SQL suivante, remplacez username avec le nom d'utilisateur de votre compte :

CREATE DATABASE username_test;
Vous pouvez exécuter la commande SQL précédente (et les commandes SQL suivantes) à partir de la ligne de commande à l'aide de l'outil MySQL ou dans votre navigateur Web à l'aide de phpMyAdmin.

Si vous utilisez phpMyAdmin, cliquez sur le nom nom d'utilisateur _test pour sélectionner la base de données. Sinon, si vous utilisez le programme de ligne de commande mysql, saisissez l'instruction SQL suivante :

USE username_test;

Ensuite, créez une table dans le nom d'utilisateur _test base de données nommée produits . Pour ce faire, exécutez l'instruction SQL suivante :

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

L'instruction SQL suivante ajoute des exemples de données aux produits tableau :

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);

Nous sommes maintenant prêts à créer un déclencheur pour notre table !

Création du déclencheur

Créons un déclencheur nommé updateProductPrice . Ce déclencheur particulier est activé chaque fois que les produits le tableau est mis à jour. Lorsque cet événement se produit, le déclencheur vérifie chaque ligne pour voir si le coût du produit (prod_cost ) la valeur est modifiée. Si c'est le cas, le déclencheur définit automatiquement le nouveau prix de l'article (prod_price ) à 1,40 fois le nouveau coût de l'article (en d'autres termes, une majoration de 40 %).

Pour créer ce déclencheur, exécutez les instructions MySQL suivantes :

DELIMITER $$
CREATE TRIGGER `updateProductPrice`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
  IF NEW.prod_cost <> OLD.prod_cost
    THEN
      SET NEW.prod_price = NEW.prod_cost * 1.40;
  END IF ;
END$$
DELIMITER ;
Le DELIMITER La commande au début de ces instructions empêche MySQL de traiter trop tôt la définition du déclencheur. Le DELIMITER La commande à la fin de ces instructions ramène le traitement à la normale.
Utiliser le déclencheur

Le updateProductPrice le déclencheur est maintenant prêt à être appelé automatiquement chaque fois qu'une ligne dans les produits le tableau est mis à jour. Par exemple, exécutez l'instruction SQL suivante pour modifier le coût du widget de base :

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Lorsque vous exécutez cette instruction SQL, le déclencheur s'active également et met automatiquement à jour le prix du widget de base proportionnellement au nouveau coût. Pour vérifier cela, vous pouvez exécuter l'instruction SQL suivante :

SELECT * FROM products;

Cette instruction renvoie les résultats suivants :

+---------+--------------+-----------+------------+
| prod_id | prod_name    | prod_cost | prod_price |
+---------+--------------+-----------+------------+
|       1 | Basic Widget |         7 |        9.8 |
|       2 | Micro Widget |      0.95 |       1.35 |
|       3 | Mega Widget  |     99.95 |        140 |
+---------+--------------+-----------+------------+
3 rows in set (0.00 sec)

Comme vous pouvez le voir, le updateProductPrice trigger a automatiquement mis à jour le prix du widget de base (9,80) en fonction du nouveau coût (7,00). Bien qu'il s'agisse d'un exemple simple de ce qu'un déclencheur peut faire, vous pouvez utiliser les mêmes techniques dans vos propres bases de données :les possibilités sont presque infinies.

Plus d'informations

  • Pour plus d'informations sur les déclencheurs MySQL, veuillez visiter http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Pour plus d'informations sur le CRÉER UN DÉCLENCHEUR déclaration, veuillez visiter http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.