PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 10.23 » 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 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 39. 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 39.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.

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). 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 en mode simple utilisateur et vous pourrez enfin le faire.

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 PROCEDURE annule_toute_commande();
   

Compatibilité

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