PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 17.1 » Référence » Commandes SQL » CREATE EVENT TRIGGER

CREATE EVENT TRIGGER

CREATE EVENT TRIGGER — définir un nouveau trigger sur événement

Synopsis

CREATE EVENT TRIGGER nom
  ON evenement
  [ WHEN variable_filtre IN (valeur_filtre [, ... ]) [ AND ... ] ]
  EXECUTE { FUNCTION | PROCEDURE } nom_fonction()
  

Description

CREATE EVENT TRIGGER crée un nouveau trigger sur événement. À chaque fois que l'événement désigné intervient et que la condition WHEN associée au trigger est satisfaite, la fonction du trigger est exécutée. Pour une introduction générale aux triggers sur événement, voir Chapitre 38. L'utilisateur qui crée un trigger sur événement devient son propriétaire.

Paramètres

nom

Le nom à donner au nouveau trigger. Ce nom doit être unique sur la base de données.

evenement

Le nom de l'événement qui déclenche un appel à la fonction donnée. Voir Section 38.1 pour plus d'informations sur les noms d'événements.

variable_filtre

Le nom d'une variable utilisée pour filtrer les événements. Ceci rend possible de restreindre l'exécution du trigger sur un sous-ensemble des cas dans lesquels ceci est supporté. Actuellement la seule valeur autorisée pour variable_filtre est TAG.

valeur_filtre

Une liste de valeurs pour la variable_filtre associée, pour laquelle le trigger sera déclenché. Pour TAG, cela signifie une liste de balises de commande (par exemple 'DROP FUNCTION').

nom_fonction

Une fonction fournie par un utilisateur, déclarée ne prendre aucun argument et renvoyant le type de données event_trigger.

Dans la syntaxe de CREATE EVENT TRIGGER, les mots clés FUNCTION et PROCEDURE sont équivalents mais la fonction référencée doit dans tous les cas être une fonction, et non pas une procédure. L'utilisation du mot-clé PROCEDURE est ici historique et dépréciée.

Notes

Seuls les superutilisateurs peuvent créer des triggers sur événement.

Les triggers sur événement sont désactivées en mode simple utilisateur (voir postgres) ainsi que quand event_triggers est configuré à false. Si un trigger sur événement erroné désactive la base de données à tel point que vous ne pouvez même pas supprimer le trigger, redémarrez le serveur avec event_triggers configuré à false pour désactiver temporairement les triggers sur événement, ou redémarrez le serveur en mode simple utilisateur, et vous pourrez enfin supprimer le trigger.

Exemples

Empêche l'exécution de toute commande DDL :

CREATE OR REPLACE FUNCTION annule_toute_commande()
  RETURNS event_trigger
 LANGUAGE plpgsql
  AS $$
BEGIN
  RAISE EXCEPTION 'la commande % est désactivée', tg_tag;
END;
$$;

CREATE EVENT TRIGGER annule_ddl ON ddl_command_start
   EXECUTE FUNCTION annule_toute_commande();
   

Compatibilité

Il n'existe pas d'instruction CREATE EVENT TRIGGER dans le standard SQL.