Introduction à MariaDB et MySQL déclencheurs

Introduction à MariaDB et MySQL déclencheurs

Objectif

Comprendre et apprendre à utiliser MariaDB et MySQL déclencheurs.

Exigences

  • Aucune exigence particulière nécessaire

Conventions

  • # - exige que la commande Linux soit exécutée avec des privilèges racine
    directement en tant qu'utilisateur racine ou en utilisant Sudo commande
  • $ - Étant donné la commande Linux à exécuter en tant qu'utilisateur non privilégié régulier

Introduction

Mysql / mariadb déclencheurs sont des programmes stockés associés à une table dans une base de données et utilisés pour effectuer automatiquement certaines actions lorsqu'un INSÉRER, SUPPRIMER ou MISE À JOUR L'événement est joué sur la table. Un déclencheur peut être défini pour effectuer une action avant ou après le événement il est associé à. Dans ce tutoriel, nous verrons comment créer et gérer un déclencheur.

Une base de données de test

Pour le bien de ce tutoriel, nous créerons une base de données avec une seule table et très simple, avec une liste de livres et leurs genres respectifs. Continuons:

MariaDB [(Aucun)]> Créer une base de données book_test; MariaDb [(Aucun)]> Créer Table Book_test.livre (-> id smallInt (1) non signé pas null auto_increment, -> name varchar (25) pas null, -> genre varchar (25) pas null, -> clé primaire (id)); 
Copie

Nous avons créé notre table triviale, maintenant nous devons le remplir avec quelques livres. Voici quelques-uns de mes favoris:

MariaDB [(Aucun)]> Utilisez Book_Test; Mariadb [book_test]> Insérer dans le livre (nom, genre) Valeurs -> ('1984', 'dystopian'), -> ('Le Seigneur des Anneaux', 'Fantasy'), -> ('On The Généalogie de Moralité ', «philosophie»); 
Copie

C'est suffisant pour notre exemple. Voici la représentation visuelle de notre tableau:

+----+---------------------------+------------+ | ID | Nom | genre | + ---- + --------------------------- + ------------ + | 1 | 1984 | Dystopie | | 2 | Le Seigneur des Anneaux | Fantasme | | 3 | Sur la généalogie de la morale | Philosophie | +----+---------------------------+------------+ 
Copie

Maintenant que nous avons préparé notre tableau de test, nous pouvons voir comment créer et associer un déclencher pour lui.

Créer un déclencheur

Comme dit précédemment, en créant un déclencheur, nous pouvons laisser notre base de données effectuer automatiquement une certaine action chaque fois que l'événement spécifié, qui peut être un parmi INSÉRER, MISE À JOUR ou SUPPRIMER, est interprété sur la table. Disons, par exemple, que pour une raison étrange, nous ne voulons pas autoriser plus d'un livre de philosophie dans notre collection, comment pouvons-nous appliquer cette règle? Bien que la restriction puisse être mise en œuvre à un niveau supérieur, nous pouvons le définir directement dans la base de données, en utilisant un déclencheur. La syntaxe pour en créer une est très facile:

Créer un déclencheur Trigger_name # Attribuez un nom au déclencheur avant | Après # Définissez lorsque le déclencheur doit être exécuté INSERT | Supprimer | Mise à jour # Définissez l'instruction associée au déclencheur sur table_name # Définissez le tableau associé à la déclencheur de chaque ligne Trigger_Stmt # Déclarez le corps de déclenchement 
Copie

Après la syntaxe ci-dessus, nous pouvons créer notre déclencheur:

MARIADB [book_test]> Demiter $ mariaDB [book_test]> Créer le déclencheur n °_more_philosophie avant d'insérer sur book_test.Livre -> Pour chaque ligne commence -> Si nouveau.genre = "philosophie" et (sélectionner le nombre (*) de book_test.réserver où genre = "philosophie")> 0 alors -> signal sqlstate '45000' set message_text = 'Un seul livre de philosophie est autorisé!';; -> fin si; -> fin $ mariaDB [book_test]> Delimiter; 
Copie

La première chose que nous avons faite à la ligne 1, c'est de demander à la base de données d'utiliser le $ caractère comme délimiteur de déclaration au lieu de la valeur par défaut ;. En effet.

Nous avons ensuite créé le déclencheur en utilisant le Créer un déclencheur déclaration à la ligne 2, suivie du nom Nous voulons y attribuer: «No_more_philosophy» dans ce cas. Après cela, nous avons spécifié que le déclencheur doit être exécuté AVANT le INSÉRER déclaration. Immédiatement après, nous avons associé le déclencheur à la table «livre».

Le corps de la gâchette commence par Pour chaque ligne Dans la ligne 3: nous avons utilisé COMMENCER Pour marquer le début de nos déclarations composées, celles qui doivent être exécutées lorsque le déclencheur est appelé, et nous avons marqué la fin de celui-ci avec FIN, Tout comme nous le faisons avec d'autres procédures.

Une fois le déclencheur associé au tableau, il s'exécutera avant que chaque insertion de ligne soit effectuée.

Lorsqu'un déclencheur est effectué, deux pseudorecords sont peuplés: VIEUX et NOUVEAU: Les valeurs qui leur sont attribuées varient en fonction du type d'événement. Pour un INSÉRER déclaration, puisque la ligne est nouvelle, la VIEUX PseudoreCord ne contiendra aucune valeur, tandis que NOUVEAU contiendra les valeurs de la nouvelle ligne qui devraient être insérées. L'opposé se produira pour un SUPPRIMER Déclaration: l'ancien contiendra les anciennes valeurs, et le nouveau sera vide. Enfin pour MISE À JOUR Les déclarations, les deux seront peuplées, car les anciens contiendront les anciennes valeurs de la ligne, tandis que New contiendra les nouveaux.

Notre déclencheur à la ligne 4 vérifiera la valeur du genre colonne pour la nouvelle ligne (identifiée par NOUVEAU): s'il est réglé sur la «philosophie», il interrogera les livres avec le genre «philosophie», et vérifiera si au moins un existe déjà. Si c'est le cas, il soulèvera une exception avec le message «Un seul livre de philosophie est autorisé!'.

Dans la dernière chose à la ligne 8, nous avons remis le délimiteur à ;.

Notre déclencheur en action

Vérifions notre déclencheur en action: nous essaierons d'insérer un nouveau livre avec le genre «Philosophie» et voir ce qui se passe:

MariaDB [book_test]> Insérer dans le livre (nom, genre) valeurs («République», «philosophie»); Erreur 1644 (45000): un seul livre de philosophie est autorisé! 
Copie

Comme vous pouvez le voir, le déclencheur a fonctionné et le serveur a répondu avec le message d'erreur que nous avons défini lorsque nous avons essayé d'ajouter un autre livre de philosophie à notre collection.



Gérer les déclencheurs

Pour vérifier les déclencheurs dans une base de données, tout ce que nous avons à faire est d'exécuter le Déclencheurs de spectacles commande:

MariaDB [book_test]> show déclencheurs \ g; *************************** 1. Row *************************** TRIGRY: NO_MORE_PHILOSOPHY EVENT: INSERT TABLE: Énoncé du livre: commencez si nouveau.genre = "philosophie" et (sélectionner le nombre (*) de book_test.réserver où genre = "philosophie")> 0 puis signal sqlstate '45000' set message_text = 'Un seul livre de philosophie est autorisé!';; FIN SI; Timing End: avant créé: null sql_mode: no_auto_create_user, no_engine_substitution necer: root @ localhost caractères_set_client: latin1 collation_connection: latin1_swedish_ci Collation de la base de données: latin1_swedish_ci 
Copie

Laisser tomber un déclencheur c'est tout aussi facile: tout ce que nous avons à faire est de référencer le déclencheur par son nom. Par exemple, si nous voulions supprimer le déclencheur «no_more_philosophie», nous devons courir:

MARIADB [book_test]> Drop Trigger no_more_philosophy;

Si nous savons interroger la base de données pour les déclencheurs existants, nous recevons un ensemble vide:

MariaDB [book_test]> show déclencheurs; Ensemble vide (0.01 SEC) 

Conclusions

Dans ce tutoriel, nous avons appris ce qu'est un déclencheur et la syntaxe qui devrait être utilisée pour en créer une. Nous avons également créé une table triviale et y avons associé le déclencheur, en voyant comment il peut être utilisé pour assurer une règle spécifique. Enfin, nous avons vu comment nous pouvons vérifier les déclencheurs existants dans une base de données et comment en supprimer un. Bien que cela devrait être suffisant pour vous aider à démarrer, vous pouvez consulter la documentation officielle MARIADB / MYSQL pour une connaissance plus approfondie.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Installez MySQL sur Ubuntu 20.04 LTS Linux
  • Masterring Bash Script Loops
  • Comment installer MySQL sur Almalinux
  • Ubuntu 20.04 WordPress avec installation Apache
  • Installation de WordPress OpenLitesPeed
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Ampache Raspberry Pi Installation
  • Ubuntu 20.04: WordPress avec l'installation de Nginx