PostgreSQL Déclencheurs : créer, répertorier et supprimer avec un exemple
⚡ Résumé intelligent
PostgreSQL Les déclencheurs sont des fonctions qui s'exécutent automatiquement lorsqu'un événement INSERT, UPDATE ou DELETE se produit sur une table, permettant à la base de données d'appliquer des règles, d'enregistrer les modifications et d'auditer les données sans code applicatif supplémentaire.

Qu'est-ce que Trigger dans PostgreSQL?
A PostgreSQL Gâchette Il s'agit d'une fonction qui se déclenche automatiquement lorsqu'un événement de base de données survient sur un objet de base de données, par exemple une table. Parmi les événements de base de données pouvant activer un déclencheur, on peut citer les opérations INSERT, UPDATE et DELETE. De plus, lorsqu'un déclencheur est créé pour une table, il est automatiquement supprimé lorsque cette table est supprimée.
Comment Trigger est utilisé dans PostgreSQL?
Lors de la création d'un déclencheur, l'opérateur FOR EACH ROW peut être utilisé. Ce déclencheur sera alors exécuté une fois pour chaque ligne modifiée par l'opération. De même, lors de sa création, un déclencheur peut être utilisé avec l'opérateur FOR EACH STATEMENT. Ce déclencheur ne sera alors exécuté qu'une seule fois pour une opération donnée.
PostgreSQL Créer un déclencheur
Pour créer un déclencheur, nous utilisons la fonction CREATE TRIGGER. Voici la syntaxe de la fonction :
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
Le nom du déclencheur est le nom du déclencheur.
AVANT, APRÈS et INSTEAD OF sont des mots-clés qui déterminent quand le déclencheur sera invoqué.
Le nom de l'événement est le nom de l'événement qui provoquera l'appel du déclencheur. Cela peut être INSERT, METTRE À JOUR, SUPPRIMER, etc.
Le nom de la table est le nom de la table sur laquelle le déclencheur doit être créé.
Si le déclencheur doit être créé pour une opération INSERT, nous devons ajouter le paramètre ON column-name.
La syntaxe suivante le démontre :
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Créer un exemple de déclencheur
Nous utiliserons le tableau des prix ci-dessous :
Le prix :
Créons une autre table, Price_Audits, où nous enregistrerons les modifications apportées à la table Price :
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Nous pouvons maintenant définir une nouvelle fonction nommée auditfunc :
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
La fonction ci-dessus insérera un enregistrement dans la table Price_Audits, y compris le nouvel identifiant de ligne et l'heure de création de l'enregistrement.
Maintenant que nous avons la fonction de déclenchement, nous devons la lier à notre table Price. Nous nommerons ce déclencheur price_trigger. Avant la création d'un nouvel enregistrement, la fonction de déclenchement sera automatiquement appelée pour consigner les modifications. Voici le déclencheur :
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Insérons un nouvel enregistrement dans la table Price :
INSERT INTO Price VALUES (3, 400);
Maintenant qu'un enregistrement a été inséré dans la table Price, un enregistrement devrait également être inséré dans la table Price_Audits grâce au déclencheur que nous avons créé. Vérifions cela :
SELECT * FROM Price_Audits;
Cela renverra ce qui suit :
Le déclencheur a fonctionné avec succès.
PostgreSQL Déclencheur de liste
Tous les déclencheurs que vous créez dans PostgreSQL sont stockés dans la table pg_trigger. Pour voir la liste des déclencheurs dont vous disposez sur le base de données, interrogez la table en exécutant la commande SELECT comme indiqué ci-dessous :
SELECT tgname FROM pg_trigger;
Cela renvoie les éléments suivants :
La colonne tgname de la table pg_trigger indique le nom du déclencheur.
PostgreSQL Déclencheur de chute
Lorsqu'un déclencheur n'est plus nécessaire, vous pouvez le supprimer tout aussi facilement. Pour supprimer un PostgreSQL déclencheur, nous utilisons l'instruction DROP TRIGGER avec la syntaxe suivante :
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
Le paramètre trigger-name indique le nom du déclencheur à supprimer.
Le nom de la table indique le nom de la table à partir de laquelle le déclencheur doit être supprimé.
La clause IF EXISTS tente de supprimer un déclencheur existant. Si vous tentez de supprimer un déclencheur qui n'existe pas sans utiliser la clause IF EXISTS, vous obtiendrez une erreur.
L'option CASCADE vous aidera à supprimer automatiquement tous les objets qui dépendent du déclencheur.
Si vous utilisez l'option RESTRICT, le déclencheur ne sera pas supprimé si des objets en dépendent.
Par Exemple:
Pour déposer le déclencheur nommé example_trigger sur la table Company, exécutez la commande suivante :
DROP TRIGGER example_trigger IF EXISTS
ON Company;
Utiliser pgAdmin
Voyons maintenant comment ces trois actions sont réalisées à l'aide de pgAdmin.
Comment créer un déclencheur dans PostgreSQL en utilisant pgAdmin
Voici comment créer un déclencheur dans PostgreSQL en utilisant pgAdmin :
Étape 1) Connectez-vous à votre compte pgAdmin
Ouvrez pgAdmin et connectez-vous à votre compte en utilisant vos identifiants.
Étape 2) Créer une base de données de démonstration
- Dans la barre de navigation de gauche, cliquez sur Bases de données.
- Cliquez sur Démo.
Étape 3) Tapez la requête
Pour créer la table Price_Audits, saisissez la requête dans l'éditeur :
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
Étape 4) Exécuter la requête
Cliquez sur le bouton Exécuter.
Étape 5) Exécutez le Code pour la fonction d'audit
Exécutez le code suivant pour définir la fonction auditfunc :
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
Étape 6) Exécutez le Code créer un déclencheur
Exécutez le code suivant pour créer le déclencheur price_trigger :
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
Étape 7) Insérer un nouvel enregistrement
- Exécutez la commande suivante pour insérer un nouvel enregistrement dans la table Price :
INSERT INTO Price VALUES (3, 400)
- Exécutez la commande suivante pour vérifier si un enregistrement a été inséré dans la table Price_Audits :
SELECT * FROM Price_Audits
Cela devrait renvoyer ce qui suit :
Étape 8) Vérifiez le contenu du tableau
Vérifions le contenu de la table Price_Audits.
Liste des déclencheurs à l'aide de pgAdmin
Étape 1) Exécutez la commande suivante pour vérifier les déclencheurs dans votre base de données :
SELECT tgname FROM pg_trigger
Cela renvoie les éléments suivants :
Goutteping Déclencheurs utilisant pgAdmin
Pour déposer le déclencheur nommé example_trigger sur la table Company, exécutez la commande suivante :
DROP TRIGGER example_trigger IF EXISTS
ON Company
Téléchargez la base de données utilisée dans ce tutoriel







