PostgreSQL : créer, supprimer un trigger

Par     7 mars 2012  - Catégorie(s): Base de données  Base de données

PostgreSQL : créer, supprimer un triggerC’est un des reproches qu’on peut faire à PostgreSQL : la gestion des triggers – ou déclencheurs – est beaucoup plus compliquée que dans Oracle.

Création d’un trigger

Le trigger, dans l’exemple ci-dessous, a pour objet de passer automatiquement le contenu du champ client_ville de la table crm.client en majuscules. La création d’un déclencheur se passe en deux temps.

Vous devez tout d’abord créer une fonction.

CREATE OR REPLACE FUNCTION crm.client_func_before() RETURNS trigger AS $client_func_before$
BEGIN
NEW.client_ville := UPPER(NEW.client_ville);
RETURN NEW;
END;
$client_func_before$ LANGUAGE plpgsql;

Vous pouvez ensuite créer votre trigger.


CREATE TRIGGER client_trg_before
BEFORE INSERT OR UPDATE ON crm.client
FOR EACH ROW
EXECUTE PROCEDURE crm.client_func_before();

La suppression du trigger

La suppression de la fonction associée au trigger entraîne, à l’aide de la clause CASCADE, la suppression du trigger.

DROP FUNCTION crm.client_func_before() CASCADE;

Mais vous pouvez aussi décider de la suppression du trigger sans pour autant détruire la fonction, notamment si elle est utilisée par d’autres triggers.

DROP TRIGGER IF EXISTS tiers_trg_before ON gestion.tiers CASCADE;

Autres billets sur le sujet :

Dsfc Dsfc Dsfc sur Tout le Monde en Blogue

Vus : 715
Publié par Denis Szalkowski : 58