Introduction à MariaDB et MySQL déclencheurs
- 1681
- 268
- Jade Muller
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 utilisantSudo
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
- « Comment combiner les résultats de plusieurs requêtes SQL en utilisant la déclaration de l'Union
- Comment créer une veille chaude avec PostgreSQL »