PostgreSQL : créer, supprimer un trigger
C’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;