modifying a timestamp in a C trigger

Поиск
Список
Период
Сортировка
От Louis-David Mitterrand
Тема modifying a timestamp in a C trigger
Дата
Msg-id 20000814164733.A1765@styx
обсуждение исходный текст
Ответы Re: modifying a timestamp in a C trigger  (Don Baccus <dhogaza@pacifier.com>)
Список pgsql-hackers
Hello,

I just finished a new C trigger that updated a "modified" column with
the current time upon an UPDATE event. It seems to work OK but I just
wanted to bounce this off you guys to check for some non-kosher stuff or
better way of doing it. Thanks in advance.

HeapTuple update_modified() {TupleDesc    tupdesc;HeapTuple    rettuple;bool isnull;TriggerData *trigdata =
CurrentTriggerData;
/* Get the current datetime. */Timestamp *tstamp = timestamp_in("now");Datum newdt = Float32GetDatum(tstamp);
CurrentTriggerData = NULL;
if (!trigdata)    elog(NOTICE, "bid_control.c: triggers are not initialized");
if (!TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event))    elog(ERROR, "bid_control.c: trigger should only be called on
INSERT");
if (!TRIGGER_FIRED_BEFORE(trigdata->tg_event))    elog(ERROR, "bid_control.c: trigger should only be called BEFORE");
rettuple = trigdata->tg_trigtuple;tupdesc = trigdata->tg_relation->rd_att;
if ((i = SPI_connect()) < 0)    elog(NOTICE, "bid_control.c: SPI_connect returned %d", i);
i = SPI_fnumber(tupdesc, "modified");rettuple = SPI_modifytuple(        trigdata->tg_relation,        rettuple,
1,       &i,        &newdt,        NULL);
 
SPI_finish();return rettuple;
}

-- 
Louis-David Mitterrand - ldm@apartia.org - http://www.apartia.org

Lord, protect me from your followers.


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Zeugswetter Andreas SB
Дата:
Сообщение: AW: Optimizer confusion?
Следующее
От: Don Baccus
Дата:
Сообщение: Re: modifying a timestamp in a C trigger