Apprendre des déclencheurs de mariadb

Apprendre des déclencheurs de mariadb

Comment utiliser les déclencheurs dans Mariadb

Un déclencheur est une procédure qui est tirée automatiquement lorsqu'une modification est effectuée dans une table de base de données. Il n'y a pas d'option pour appeler ou exécuter un déclencheur manuellement. L'objectif principal de l'utilisation de déclencheurs est de maintenir l'intégrité de la base de données et il peut être utilisé avec les contraintes d'intégrité référentielles qui obligent les règles d'intégrité. Dans un SGBD, lorsque un événement d'insertion, de mise à jour et de suppression se produit, la procédure de déclenchement associée à la table affectée sera exécutée automatiquement et effectuera les actions requises. Différents types de déclencheurs sont pris en charge par la base de données. Les déclencheurs sont principalement classés de deux manières. L'un est avant le déclencheur et un autre est après le déclencheur. Avant que les déclencheurs ne soient appelés avant que tout événement ne soit exécuté dans la table et après que les déclencheurs soient appelés après avoir exécuté tout événement dans la table. La façon dont vous installez MARIADB et appliquez différents types de déclencheurs dans le serveur de base de données MARIADB sur Ubuntu est affiché dans ce tutoriel.

Installation de MariaDB:

Exécutez la commande ci-dessous pour mettre à jour le système et installer le serveur et le client MariaDB.

# sudo apt-get update && sudo apt-get install mariadb-server mariaDb-client

Taper 'y ' et appuyez sur Entrée pour terminer le processus d'installation.

Exécutez la commande suivante pour démarrer le serveur MariaDB.

# sudo systemctl start mariadb

Vérifier que le serveur fonctionne correctement ou non. La sortie de la commande suivante affichera l'état des détails du serveur. La sortie indique que Mariadb 10.1.30 Verion fonctionne.

# Sudo Systemctl Status MariaDB

Exécutez la commande suivante si vous souhaitez arrêter le serveur. N'exécutez pas cette commande maintenant.

# sudo systemctl stop mariadb

Configurer la base de données et les tables

Vous devez créer une base de données et deux tables ou plus pour vérifier comment fonctionnent les déclencheurs. Tout d'abord, exécutez le client MySQL pour configurer la base de données. Il demandera le mot de passe racine pour accéder au serveur de base de données.

# sudo mysql -u racine

Créer une base de données nommée magasin.

> Créer un magasin de base de données;

Sélectionnez cette nouvelle base de données:

> utiliser le magasin;

Créer trois tables dans magasin base de données pour appliquer des actions de déclenchement sur ces. Ici, Produits, stock et stock_add Des tables sont créées.

Créer des produits de table
(id int (11),
nom varchar (30) pas null,
Prix ​​Int (11),
Clé primaire (ID)
));
Créer des stocks de table
(Product_id Int (11),
ouverture_stock int (11),
actuel_stock int (11),
Clé primaire (Product_id)
));
Créer une table Stocks_add
(Product_id Int (11),
Date d'entrée_date,
Quantité Int (11),
Clé primaire (product_id, entrée_date)
));

Maintenant, insérez des données dans ces trois tables.

Des produits:

Insérer dans les produits set id = 101, name = "sac", prix = 1000;
Insérer dans les produits set id = 102, name = "Pen", prix = 100;
Insérer dans les produits set id = 103, name = "crayon", prix = 50;

Stocks:

Insérer dans les stocks set product_id = 101, ouverture_stock = 200, current_stock = 100;
Insérer dans les stocks set product_id = 102, ouverture_stock = 230, current_stock = 150;
Insérer dans les stocks set product_id = 103, ouverture_stock = 220, current_stock = 300;

Stocks_add:

Insérer dans Stocks_Add set product_id = 103, entry_date = "2018-01-01", quantité = 30;
Insérer dans Stocks_Add set product_id = 103, entry_date = "2018-01-02", quantité = 50;
Insérer dans Stocks_Add set product_id = 103, entry_date = "2018-01-03", quantité = 45;

Créer après le déclencheur

Vous pouvez créer après le déclencheur pour effectuer une action automatiquement après avoir inséré ou mis à jour ou supprimé des enregistrements d'un tableau particulier. Ici, des produits et actions Les tables sont sélectionnées pour créer après la suppression de suppression. La table des données du stock dépend de la table des données des produits. Donc, si un enregistrement est supprimé du tableau des produits, les enregistrements connexes du tableau des actions doivent être supprimés. Créez automatiquement la procédure de déclenchement suivante pour supprimer tout enregistrement connexe à partir de la table des actions lorsque tout enregistrement est supprimé du tableau des produits. Dans ce déclencheur, l'ID supprimé est reconnu par vieux.identifiant.

Délimiteur //
Créer Trigger Products_after_delete
Après la suppression
Sur les produits pour chaque ligne
COMMENCER
Supprimer des actions où product_id = old.identifiant;
FIN;
//


Une fois le déclencheur est créé pour la table des produits. Vous devez maintenant tester ce déclencheur fonctionne correctement ou non. Exécutez la requête suivante pour supprimer un enregistrement des produits où identifiant est 101 et vérifier les données des produits et des tables de stocks. Après avoir exécuté la requête, vous constaterez que l'enregistrement connexe de la table de stock est supprimé après le déclencheur. Aucun enregistrement pour la valeur d'identification, 101, ne se trouvera dans les deux tables.

> Supprimer des produits où id = 101;
> Sélectionner * dans les produits;
> Sélectionner * à partir des actions;

Créer avant les déclencheurs

Avant que le déclencheur ne soit utilisé pour prendre des mesures avant d'insérer, de mettre à jour ou de supprimer des enregistrements ou plus d'un tableau particulier. Ici, actions et Stocks_add la table est utilisée pour créer avant le déclencheur. La valeur du tableau Current_Stock of Stocks dépend de la valeur de quantité du tableau Stocks_add. Si vous mettez à jour une valeur de quantité de la table Stocks_add, alors Current_Stock of Stocks Table doit être mis à jour. Ainsi, si une valeur de quantité existante du tableau Stocks_Add diminue, Current_Stock of Stocks sera diminué et si la valeur de quantité augmente, Current_Stock sera augmenté. Créer avant la mise à jour du déclencheur de la table Stocks_add. Dans ce déclencheur, la valeur de quantité modifiée est calculée en soustrayant l'ancienne quantité de la nouvelle quantité.

Délimiteur //
Créer un déclencheur Stocks_before_update
Avant la mise à jour
Sur Stocks_add pour chaque ligne
COMMENCER
Mettre à jour les actions set current_stock = current_stock + (nouveau.Quantité-ancienne.quantité)
Où product_id = old.Product_id;
FIN;
//

Avant de mettre à jour, vérifiez les valeurs actuelles des actions et des tables d'actions_add.

> Sélectionner * à partir des actions;
> select * from Stocks_add;


Supposons que vous deviez mettre à jour la valeur de quantité de la table Stocks_add où produit_id est 103 et Date d'entrée est 2018-01-01 lequel est 30 maintenant. Si vous souhaitez mettre à jour la valeur par 75 Ensuite, exécutez la requête de mise à jour suivante et vérifiez à nouveau les deux tables. La quantité accrue est de 75-30 = 45. Ainsi, après la mise à jour, le déclencheur sera tiré et actuel_stock of Stocks Table sera défini comme 300 + 45 = 345.

Mettre à jour Stocks_Add Set Quantity = 75 Where Product_id = 103 et Entry_Date = "2018-01-01";
> Sélectionner * à partir des actions;
> select * from Stocks_add;

L'utilisation de deux types de déclencheurs est indiquée dans ce tutoriel. De la même manière, vous pouvez créer d'autres types de déclencheurs avant et après pour vos tables de base de données en fonction de vos exigences.