PostgreSQL

PostgreSQL Créer un déclencheur après INSERT/UPDATE/DELETE

PostgreSQL Créer un déclencheur après INSERT/UPDATE/DELETE
Chaque fois qu'une action de modification définie (déclaration SQL INSERT, UPDATE, DELETE ou TRUNCATE) est effectuée sur une table définie, un déclencheur est une série d'événements qui sont exécutés automatiquement. Les déclencheurs peuvent être utilisés pour imposer des règles métier, authentifier les informations d'entrée et maintenir une piste d'audit. Les déclencheurs SQL sont implémentés selon le format SQL. Il comprend des structures utilisées dans plusieurs langages de programmation vous permettant de déclarer des variables locales, de surveiller le flux du processus avec des déclarations, d'attribuer des résultats d'instruction à des variables et de gérer les erreurs. De plus, une fois que vous construisez un déclencheur pour quelque chose, comme une table, le déclencheur est immédiatement supprimé dès que la table est supprimée. Nous verrons comment fonctionnent les déclencheurs PostgreSQL tout au long de ce segment.

Syntaxe:

Voici la syntaxe simple pour générer un déclencheur :

>> CREATE TRIGGER nom_déclencheur [BEFORE|AFTER|INSTEAD OF] nom_événement ON nom_table [ ----Logique de déclenchement ];

Voici l'explication de la requête générale ci-dessus.

Pour comprendre brièvement le concept de déclencheur, lancez le shell PostgreSQL depuis les applications. Changez de serveur si vous souhaitez travailler sur un autre serveur, ou bien appuyez sur entrée depuis votre clavier. Ajoutez le nom de la base de données sur laquelle vous souhaitez travailler, sinon, laissez-le tel quel et appuyez sur Entrée. Comme vous pouvez le voir, nous travaillons actuellement sur le port 5432 par défaut ; tu peux aussi le changer. Après cela, fournissez un nom d'utilisateur autre que Postgres si vous souhaitez travailler avec un autre utilisateur, ou laissez-le vide et appuyez sur le bouton Entrée. Maintenant, votre shell de commande est prêt à être utilisé.

TRIGGER à la commande INSERT

Regardons l'exemple d'un déclencheur lorsque la commande INSERT a été utilisée comme événement déclencheur. Pour cela, nous devons créer deux nouvelles tables, e.g., « employer » et « auditer ». Le tableau « employer » contiendra les dossiers personnels des employés d'une entreprise spécifique et le tableau « audit » contiendra les informations sur le moment où les employés ont rejoint l'entreprise. Les requêtes pour créer les tables sont données ci-dessous.

>> CREATE TABLE employ( ID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age VARCHAR(100) NOT NULL, Salary VARCHAR(100) NOT NULL );

>> CREATE TABLE audit( empid INTEGER NOT NULL, entry_date VARCHAR(100) NOT NULL );

Vous devez créer une procédure qui sera automatiquement exécutée ou fonctionnera lorsque le déclencheur sera appelé. Il sera utilisé dans la prochaine commande CREATE TRIGGER. À partir de la commande ci-dessous, vous pouvez avoir une idée que nous avons créé une procédure "auditlogfunc()", qui renverra un déclencheur en tant que variable "$examp_table$". La fonction commence par la clause BEGIN, suivie de l'instruction INSERT. Cette instruction INSERT insère l'identifiant automatique et la date actuelle à l'aide de la fonction intégrée dans la table « audit » et renvoie ce résultat à TRIGGER.

Il est temps de générer un TRIGGER à l'aide de la commande CREATE TRIGGER. Nous créons un déclencheur nommé « em_trig » sur la table « employer ». La clause AFTER INSERT ON signifie que ce déclencheur ne fonctionnera qu'après l'exécution de la commande d'insertion. FOR EACH ROW signifie qu'à l'exécution de chaque commande INSERT, ce déclencheur appellera et exécutera la procédure "auditlogfunc()" créée juste avant.

>> CREATE TRIGGER emp_trig APRES INSERTION ON employ POUR CHAQUE LIGNE EXECUTER LA PROCEDURE auditlogfunc();

Il est temps d'insérer des données dans la table « employer ». Exécutez la commande INSERT ci-dessous dans le shell.

>> INSÉRER DANS LES VALEURS employ(ID, Name, Age, Salary) ('1', 'Paul', '34', '60000');

Consultez le tableau « employer ». Les données ont été ajoutées avec succès avec la commande INSERT.

Ayez maintenant un aperçu du tableau « audit ». Vous pouvez le voir, il est également mis à jour en raison du déclencheur "emp_trig" et auditlogfunc().

TRIGGER sur commande UPDATE

Nous allons maintenant examiner un exemple de déclencheur utilisant la commande UPDATE comme événement déclencheur. Nous devons créer à nouveau une nouvelle procédure avec le nom différent "mise à jour" tel que présenté dans l'image. Cette procédure insère également des enregistrements dans la table « audit » sur appel.

Maintenant, créez un nouveau déclencheur nommé "update_emp" à l'aide de la commande CREATE TRIGGER. Cela ne fonctionnera qu'après l'exécution de la requête UPDATE sur la table employ et il appellera la procédure "update".

Mettre à jour la table « employer » en définissant son ID sur « 2 ».

Récupérez les enregistrements d'une table « employer » pour afficher les modifications en annexe ci-dessous.

Comme vous pouvez le voir sur le tableau « audit », il a été réorganisé au fur et à mesure que le tableau « employer » a été mis à jour.

DÉCLENCHEMENT sur commande SUPPRIMER

Ouvrez pgAdmin 4 à partir des applications pour travailler sur l'interface graphique PostgreSQL. Sous le schéma « test », vous découvrirez une liste de tables. Créer une nouvelle table "emp" et la même table "audit".

Cette fois, nous invoquerons la commande de déclenchement par la commande DELETE. Ci-dessous se trouve le tableau "em" avec quelques enregistrements.

Voici le tableau d'audit avec les deux mises à jour précédentes.

Créer une procédure nommée « Del() » pour déclencher l'insertion dans la table « audit » lors de la suppression des enregistrements de la table « emp ».

Créez un déclencheur « del_trig » à l'aide de la requête CREATE TRIGGER. Ce déclencheur exécutera la procédure « Del » lorsqu'une clause DELETE sera exécutée sur la table « emp ».

Supprimons un enregistrement de la table « em » où l'employé « id » est « 5 ». Cela supprimera une ligne du tableau « em ».

Récupérez les enregistrements de la table « em » et jetez-y un œil. Vous pouvez voir que la ligne a été supprimée où l'"id" était "5".

Extrayez maintenant les enregistrements de la table "audit" et vous remarquerez qu'elle a été mise à jour car l'opération DELETE a été effectuée sur la table "emp".

Conclusion:

Nous avons fait presque tous les exemples essentiels pour comprendre le concept de TRIGGER lors de l'exécution des opérations INSERT, UPDATE et DELETE.

Comment utiliser AutoKey pour automatiser les jeux Linux
AutoKey est un utilitaire d'automatisation de bureau pour Linux et X11, programmé en Python 3, GTK et Qt. En utilisant ses fonctionnalités de script e...
Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...