PostgreSQL : créer, supprimer un trigger

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;

 

Base de données / , , , , , ,