IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

9.28. Fonctions des triggers sur les événements

Actuellement, PostgreSQL™ fournit une fonction d'aide sur les triggers d'événement, pg_event_trigger_dropped_objects.

pg_event_trigger_dropped_objects renvoie une liste de tous les objets supprimés par la commande qui a déclenché l'appel à l'événement sql_drop. Si elle est appelée dans un autre contexte, pg_event_trigger_dropped_objects lève une erreur. pg_event_trigger_dropped_objects renvoie les colonnes suivantes :

Nom Type Description
classid Oid OID du catalogue auquel appartient l'objet
objid Oid OID de l'objet dans le catalogue
objsubid int32 Sous-identifiant de l'objet (par exemple, numéro d'attribut pour les colonnes)
object_type text Type de l'objet
schema_name text Nom du schéma auquel appartient l'objet. NULL dans le cas contraire. Aucune guillemet n'est utilisé.
object_name text Nom de l'objet si la combinaison nom du schéma et nom de l'objet peut être utilisée comme identifiant unique pour l'objet, NULL dans les autres cas. Aucun guillemet n'est utilisé et le nom n'est jamais qualifié du nom du schéma.
object_identity text Version textuelle de l'identité de l'objet, qualifié du schéma. Tous les identifiants présents dans l'identité sont placés entre guillemets si nécessaire.

La fonction pg_event_trigger_dropped_objects peut être utilisée dans un trigger d'événement comme ici :

CREATE FUNCTION test_trigger_evenement_pour_suppression()
        RETURNS event_trigger LANGUAGE plpgsql AS $$
DECLARE
    obj record;
BEGIN
    FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects()
    LOOP
        RAISE NOTICE '% objet supprimé : % %.% %',
                     tg_tag,
                     obj.object_type,
                     obj.schema_name,
                     obj.object_name,
                     obj.object_identity;
    END LOOP;
END
$$;
CREATE EVENT TRIGGER test_trigger_evenement_pour_suppression
   ON sql_drop
   EXECUTE PROCEDURE test_trigger_evenement_pour_suppression();

Pour plus d'informations sur les triggers sur événements, voir Chapitre 37, Déclencheurs (triggers) sur évènement.