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 !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Tue 27 December 2016 15:39

Emy.C
Participant occasionnel
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 Tue 27 December 2016 20:24

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

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 Wed 28 December 2016 18:11

Emy.C
Participant occasionnel
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 Thu 29 December 2016 18:05

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 566
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 (Thu 29 December 2016 18:16)


Jean-Marie
Azimut

Hors ligne

 

Pied de page des forums

Powered by FluxBB