Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un dysfonctionnement (désormais résolu), les listes de diffusion n'ont pas fonctionné pendant 2 semaines.

Certains messages ont été perdus.

Nous faisons notre possible afin de les récupérer, mais ne pouvons vous le garantir.

Nous vous prions de bien vouloir nous excuser pour la gêne occasionnée.

 

L'équipe GeoRezo

#1 mar. 27 décembre 2016 15:39

Emy.C
Membre
Date d'inscription: 9 oct. 2014
Messages: 21

[Potsgres]erreur sur trigger d'évènement

Bonjour,

je cherche à créer un trigger d'évènement pour récupérer des informations sur une base de données dans laquelle interviennent plusieurs personnes.
Le but est d'alimenter une table qui pour chaque création ou surpression de tables stockerait le nom du rôle courant, la date de l'action ainsi que l'objet sur lequel porterait l'action. 
Je suis en train d'effctuer des tests en local.
J'ai créer un table dans laquelle je veux voir enregistrer mes données :

Code:

create table db_management.tableref (user_name varchar, date_action date, table_name name, action_type text, object_type text , objid oid) ;

puis j'ai crée mon trigger :

Code:

create or replace function report_user ()
returns event_trigger 
as $$
declare 
r record ; 
begin
    for r in select * from pg_event_trigger_ddl_commands () loop 
        insert into db_management.tableref (user_name, date_action, table_name, action_type, object_type, objid)
        select current_user, current_date, pgc.relname, current_query(), r.object_type, r.objid
        from pg_clas as pgc where pgc.oid = r.oid ;
    end loop ;
end;
$$
language plpgsql ; 

create event trigger report_user_action on ddl_command_end
execute procedure report_user () ;

je reçoit l'erreur suivante :

Code:

ERREUR: la fonction pg_event_trigger_ddl_commands() n'existe pas
État SQL :42883
Astuce : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

Dois je comprendre qu'il faut ajouter une extension s spécifiques pour créer des triggers d’événements ou mon code révèle-t-il que je n'ai pas compris la mécanique des instructions utilisées?

Merci d'avance.

Emy.C.

Hors ligne

 

#2 mar. 27 décembre 2016 20:24

tumasgiu
Moderateur
Lieu: Ajaccio
Date d'inscription: 5 juil. 2010
Messages: 360

Re: [Potsgres]erreur sur trigger d'évènement

Salut,

quelle version de postgresql utilisez vous ?

Il me semble que pg_event_trigger_ddl_commands n'est disponible
qu'a partir de la version 9.5.

Hors ligne

 

#3 mer. 28 décembre 2016 18:11

Emy.C
Membre
Date d'inscription: 9 oct. 2014
Messages: 21

Re: [Potsgres]erreur sur trigger d'évènement

Je suis sur la version 9.3. Effectivement après relecture de la documentation de la version 9.3, je ne trouve pas mention de cette option.
Je vais essayer autrement.
Merci beaucoup.

Emy C.

Hors ligne

 

#4 jeu. 29 décembre 2016 18:05

jmarsac
Membre
Lieu: NICE
Date d'inscription: 26 oct. 2005
Messages: 160
Site web

Re: [Potsgres]erreur sur trigger d'évènement

Les triggers sur évènement sont bien disponibles sur la 9.3. Ils ont d'ailleurs été introduits dans la 9.3.
Vous pouvez essayer l'exemple de la doc pour vérifier.

Par contre la fonction pg_event_trigger_ddl_commands() n'est apparue qu'en 9.5

Dernière modification par jmarsac (jeu. 29 décembre 2016 18:16)


Jean-Marie

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |