Documentation PostgreSQL 14.22 » Référence » Commandes SQL » CREATE EVENT TRIGGER

Précédent | Niveau supérieur | Suivant
CREATE DOMAIN | Sommaire | CREATE EXTENSION

## 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 40. 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 40.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 super-utilisateurs 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 FUNCTION annule_toute_commande();

## Compatibilité

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

## Voir aussi

ALTER EVENT TRIGGER, DROP EVENT TRIGGER, CREATE FUNCTION