PhpMyAdmin - Fonctions et déclencheurs

Table des matières

Les fonctions sont très similaires à Procédures stockées (SP), la différence réside dans certains détails, le principal étant qu'ils ne renvoient qu'une valeur, lorsqu'un SP peut en renvoyer plusieurs, de plus nous n'avons pas besoin d'une variable pour stocker la valeur résultante, il est donc beaucoup plus facile à utiliser dans un SELECT .

Création d'une fonctionL'objectif d'une fonction est d'isoler la logique derrière certains éléments afin qu'ils soient plus faciles à utiliser, de cette façon nous pouvons documenter la base de données et son fonctionnement et pouvoir simplifier les actions de l'application qui pourraient communiquer avec la base de Les données. Pour créer une fonction, nous utiliserons les éléments suivants :

  • Le Zone de requête, où nous pouvons écrire la fonction.
  • Le changement du délimiteur.
  • Le mécanisme d'édition et de manipulation de la fonction.

Voyons comment définir une fonction à travers un exemple :

 CREATE FUNCTION get_country_name (param_country_code CHAR (2)) RETOURNE VARCHAR (50) LIS SQL DATA BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'not found'; SELECTIONNER la description FROM pays WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; FINIR // 
Comme on peut le voir, la syntaxe est très similaire à celle du SP, seulement ici nous ne définissons pas les valeurs de DANS Oui EN DEHORS sinon que nous définissons les paramètres qu'ils entrent et déclarons une valeur unique qui sera la REVENIR.
Quand nous allons à la section de Routines Dans la page de structure de la base de données, nous le verrons reflété de la manière suivante :

Après avoir créé notre fonction, voyons comment nous pouvons la tester, cette fonction que nous utilisons comme test ce qu'elle fait est de consulter une table de pays et de renvoyer le nom d'un pays lorsque nous demandons un code, en cas de ne le trouvant pas, il nous renvoie pas trouvé:

 SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) comme test; 
On fait simplement une sélection avec un CONCAT afin de joindre les résultats dans une chaîne et on obtiendra ceci :
 ca-> Canada, zz-> pas trouvé
Comme on peut le voir, c'est beaucoup plus facile que de construire les requêtes que chaque pays consultera séparément.

DéclencheursLes Déclencheurs sont différentes des fonctions et Procédures stockéesCelles-ci n'ont pas besoin d'être appelées par l'utilisateur, elles se produiront lorsqu'une action sera exécutée sur la table à laquelle elles sont liées, ce qui nous amène à l'autre différence des fonctions, c'est qu'elles sont générales; Les Déclencheurs s'ils sont liés à une table spécifique.
Voyons comment créer un Gâchette:

 CRÉER LE DÉCLENCHEUR after_book_insert APRÈS INSÉRER SUR LE livre POUR CHAQUE LIGNE COMMENCER LA MISE À JOUR author SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; FINIR // 
Comme nous pouvons le voir, nous devons également définir un nouveau délimiteur // à l'intérieur de la boîte de requête afin que nous puissions inclure toutes les instructions du Gâchette, dans le cas de l'exemple nous le relions dans le Après l'insertion c'est-à-dire qu'après avoir effectué une insertion puis exécuté l'action définie, cela aide la base de données à gérer de manière autonome les actions au fur et à mesure qu'elles se produisent.

Une fois la Gâchette Lorsque nous allons à la page de structure de la table, nous la verrons disponible :

wave wave wave wave wave