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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Trigger fonction en C


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3
    Par défaut Trigger fonction en C
    Salut,
    Je cherche à faire un trigger fonction en C.
    J'ai récupéré le code suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include "postgres.h"
    #include "executor/spi.h"       /* nécessaire pour fonctionner avec SPI */
    #include "commands/trigger.h"   /* ... et les déclencheurs */
     
    extern Datum trigf(PG_FUNCTION_ARGS);
     
    PG_FUNCTION_INFO_V1(trigf);
     
    Datum
    trigf(PG_FUNCTION_ARGS)
    {
        TriggerData *trigdata = (TriggerData *) fcinfo->context;
        TupleDesc   tupdesc;
        HeapTuple   rettuple;
        char       *when;
        bool        checknull = false;
        bool        isnull;
        int         ret, i;
     
        /* on s'assure que la fonction est appelée en tant que déclencheur */
        if (!CALLED_AS_TRIGGER(fcinfo))
            elog(ERROR, "trigf: not called by trigger manager");
     
        /* nuplet à retourner à l'exécuteur */
        if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))
            rettuple = trigdata->tg_newtuple;
        else
            rettuple = trigdata->tg_trigtuple;
     
     
     
        tupdesc = trigdata->tg_relation->rd_att;
     
            SPI_getbinval(rettuple, tupdesc, 1, &isnull);
            if (isnull)
                rettuple = NULL;
     
     
        return PointerGetDatum(rettuple);
    }
    Seulement j'ai une erreur de compil

    error LNK2001: unresolved external symbol _SPI_getbinval
    En gros je ne sait pas comment et ou trouver la fonction SPI_getbinval. Quelqu'un pourrait il me débloquer?

    Merci d'avance
    Windows 2000, VC++ 6.0, PostgreSQL 8.0.1 natif et 7.4.2 sous cygwin.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 30
    Par défaut
    C'est quoi ta commande de compilation?
    Moi, j'ai pas fait de trigger, mais juste des procédures stockées. Ma commande de compillation ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      gcc -fpic -c MonProg.c -I`pg_config --includedir-server` -I`pg_config --includedir`
    Ensuite j'ai créé une libraire partagée avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     gcc -shared -o  MonProg.so MonProg.o
    Mais bon, c'est sous linux...
    A+
    Jul.

    ps: sous linux, il faut aussi que le package "devel" soit installé. Je sais pas si c'est pareil sou Windows.

Discussions similaires

  1. Trigger fonction C
    Par pouf_ dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 12/10/2009, 10h48
  2. trigger fonctions je suis perdu
    Par bastboost dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/05/2008, 12h40
  3. [9][10]trigger fonction varray ?
    Par lunab54 dans le forum SQL
    Réponses: 8
    Dernier message: 10/08/2007, 13h53
  4. Réponses: 11
    Dernier message: 20/12/2005, 18h40
  5. lancer fonction sans trigger
    Par $grm$ dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 04/04/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo