Déclencheur PostgreSQL: créer, supprimer un exemple

Table des matières:

Anonim

Que sont les déclencheurs PostgreSQL?

Un déclencheur PostgreSQL est une fonction qui est déclenchée automatiquement lorsqu'un événement de base de données se produit sur un objet de base de données. Par exemple, une table.

Les exemples d'événements de base de données qui peuvent activer un déclencheur incluent INSERT, UPDATE, DELETE, etc. De plus, lorsque vous créez un déclencheur pour une table, le déclencheur sera automatiquement supprimé lorsque cette table est supprimée.

Dans ce didacticiel PostgreSQL, vous apprendrez ce qui suit:

  • Que sont les déclencheurs PostgreSQL?
  • Comment Trigger est-il utilisé dans POSRGREQL?
  • Créer un déclencheur
  • Utilisation de pgAdmin
  • Suppression de déclencheurs

Comment Trigger est-il utilisé dans POSRGREQL?

Un déclencheur peut être marqué avec l'opérateur FOR EACH ROW lors de sa création. Un tel déclencheur sera appelé une fois pour chaque ligne modifiée par l'opération. Un trigger peut également être marqué avec l'opérateur FOR EACH STATEMENT lors de sa création. Ce déclencheur ne sera exécuté qu'une seule fois pour une opération spécifique.

Créer un déclencheur

Pour créer un trigger, nous utilisons la fonction CREATE TRIGGER. Voici la syntaxe de la fonction:

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];

Le nom du déclencheur est le nom du déclencheur.

Les mots-clés BEFORE, AFTER et INSTEAD OF déterminent le moment où le déclencheur sera appelé.

Le nom de l'événement est le nom de l'événement qui provoquera l'appel du déclencheur. Cela peut être INSERT, UPDATE, DELETE, 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 montre:

CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];

Par exemple:

Nous utiliserons le tableau des prix ci-dessous:

Prix:

Créons une autre table, Price_Audits, dans laquelle 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$BEGININSERT 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 donnerons au déclencheur le nom price_trigger. Avant la création d'un nouvel enregistrement, la fonction de déclenchement sera appelée automatiquement pour enregistrer les modifications. Voici le déclencheur:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();

Insérons un nouvel enregistrement dans la table des prix:

INSERT INTO PriceVALUES (3, 400);

Maintenant que nous avons inséré un enregistrement dans la table Price, un enregistrement doit également être inséré dans la table Price_Audit. Ce sera le résultat du déclencheur que nous avons créé sur la table des prix. Vérifions ceci:

SELECT * FROM Price_Audits;

Cela renverra ce qui suit:

Le déclencheur a fonctionné avec succès.

Liste des déclencheurs

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 que vous avez sur la base de données, interrogez la table en exécutant la commande SELECT comme indiqué ci-dessous:

SELECT tgname FROM pg_trigger;

Cela renvoie ce qui suit:

La colonne tgname de la table pg_trigger indique le nom du déclencheur.

Suppression de déclencheurs

Pour supprimer un déclencheur PostgreSQL, nous utilisons l'instruction DROP TRIGGER avec la syntaxe suivante:

DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];

Le paramètre de nom de déclencheur 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 qui existe. Si vous essayez 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 les objets en dépendent.

Par exemple:

Pour supprimer le déclencheur nommé example_trigger sur la table Price, nous exécutons la commande suivante:

Pour déposer le déclencheur nommé example_trigger sur la table Company, exécutez la commande suivante:

DROP TRIGGER example_trigger IF EXISTSON Company;

Utilisation de pgAdmin

Voyons maintenant comment les trois actions se sont exécutées à l'aide de pgAdmin.

Créer des déclencheurs

Pour accomplir la même chose via pgAdmin, procédez comme suit:

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  1. Dans la barre de navigation sur la gauche, cliquez sur Bases de données.
  2. Cliquez sur Démo.

Étape 3) Pour créer la table Price_Audits, saisissez l'éditeur de requête:

CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)

Étape 4) Cliquez sur le bouton Exécuter.

Étape 5) Exécutez le code suivant pour définir la fonction auditfunc:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT 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 suivant pour créer le déclencheur price_trigger:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()

Étape 7)

  1. Exécutez la commande suivante pour insérer un nouvel enregistrement dans la table Price:
    INSERT INTO PriceVALUES (3, 400)
  2. 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érifions le contenu de la table Price_Audits:

Liste des déclencheurs

É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 ce qui suit:

Suppression de déclencheurs

Pour déposer le déclencheur nommé example_trigger sur la table Company, exécutez la commande suivante:

DROP TRIGGER example_trigger IF EXISTSON Company

Résumé:

  • Un déclencheur PostgreSQL fait référence à une fonction qui est déclenchée automatiquement lorsqu'un événement de base de données se produit sur un objet de base de données, tel qu'une table.
  • Des exemples de tels événements de base de données incluent INSERT, UPDATE, DELETE, etc.
  • Un déclencheur n'existe que pendant la durée de vie de l'objet de base de données pour lequel il a été créé.
  • Si l'objet de base de données est supprimé, le déclencheur sera également supprimé.
  • Les déclencheurs PostgreSQL sont créés à l'aide de l'instruction CREATE TRIGGER.
  • Chaque déclencheur est associé à une fonction indiquant ce que le déclencheur fera lorsqu'il est appelé.

Téléchargez la base de données utilisée dans ce didacticiel