Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/02/2005, 14h08   #1
Invité de passage
 
Inscription : décembre 2002
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 3
Points : 0
Points : 0
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 :
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

Citation:
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.
prezgob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2005, 18h06   #2
Candidat au titre de Membre du Club
 
Inscription : août 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 30
Points : 14
Points : 14
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 :
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 :
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.
bdkiller est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h28.


 
 
 
 
Partenaires

Hébergement Web