Обсуждение: Trigger programming..

Поиск
Список
Период
Сортировка

Trigger programming..

От
"Mitch Vincent"
Дата:
I have a function written in C, a trigger calls this function on the table
applicants. I need to get the value from a field named "app_id" in the table
that the trigger is pulled on (applicants)..

I have this code...

app_id_fieldname is a character pointer with value "app_id". char_app_id is
always NULL though..  I'm totally guessing at most of this from looking
through some examples and the SPI section of the programmer's manual.

Someone school me -- please! :-)


 tupdesc = rel->rd_att;  /* what the tuple looks like (?) */

 app_id_colnum = SPI_fnumber(tupdesc, app_id_fieldname);

  if (app_id_colnum == SPI_ERROR_NOATTRIBUTE)
   elog(ERROR, "app_id_colnum - SPI_ERROR_NOATTRIBUTE error ");

 char_app_id = SPI_getvalue(rettuple, tupdesc, app_id_colnum);

Thanks!!

-Mitch


Re: Trigger programming..

От
Tom Lane
Дата:
"Mitch Vincent" <mitch@venux.net> writes:
> I have this code...

>  tupdesc = rel->rd_att;  /* what the tuple looks like (?) */

>  app_id_colnum = SPI_fnumber(tupdesc, app_id_fieldname);

>   if (app_id_colnum == SPI_ERROR_NOATTRIBUTE)
>    elog(ERROR, "app_id_colnum - SPI_ERROR_NOATTRIBUTE error ");

>  char_app_id = SPI_getvalue(rettuple, tupdesc, app_id_colnum);

Looks OK to me, as far as it goes.  I'd wonder whether the tuple
actually matches the tupdesc you're using.

Looking at SPI_getvalue itself (in src/backend/executor/spi.c),
I can see that SPI_result might offer a clue about why it's failing.

            regards, tom lane