Re: help needed on SPI_modifytuple.
От | fabrizio picca |
---|---|
Тема | Re: help needed on SPI_modifytuple. |
Дата | |
Msg-id | 1532344d05091209012fc914df@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: help needed on SPI_modifytuple. (Michael Fuhr <mike@fuhr.org>) |
Список | pgsql-interfaces |
thanks a lot Michael, you've just hit the problem! Now everything works fine! Thanks again Fabrizio On 9/12/05, Michael Fuhr <mike@fuhr.org> wrote: > On Mon, Sep 12, 2005 at 04:17:33PM +0200, fabrizio picca wrote: > > I'm trying to sipmply modify a tuple before it will be inserted in the db. > > The problem is that when it try to insert the modified tuple with > > SPI_modifytuple all i get is a SPI_ERROR_ARGUMENT negative (-6) . > > Could someone help me? i'm reallygoing crazy. > > > > What i did is just a fire-before C trigger that acts like this: > > Is the trigger fired on INSERT, UPDATE, or both? > > > oldtuple = trigdata->tg_trigtuple; > > newtuple = trigdata->tg_newtuple; > [...] > > rettuple=SPI_modifytuple(rel,newtuple,1,&attnum,&new_value,&isnull); > > I didn't look closely at the rest of the code, but if the trigger > is fired on INSERT then you should pass oldtuple; newtuple will be > NULL, causing SPI_modifytuple() to fail with SPI_ERROR_ARGUMENT. > Here's an extract from "Writing Trigger Functions in C" in the > "Triggers" chapter of the documentation: > > tg_trigtuple > > A pointer to the row for which the trigger was fired. This is > the row being inserted, updated, or deleted. If this trigger was > fired for an INSERT or DELETE then this is what you should return > from the function if you don't want to replace the row with a > different one (in the case of INSERT) or skip the operation. > > tg_newtuple > > A pointer to the new version of the row, if the trigger was fired > for an UPDATE, and NULL if it is for an INSERT or a DELETE. This > is what you have to return from the function if the event is an > UPDATE and you don't want to replace this row by a different one > or skip the operation. > > -- > Michael Fuhr > -- L'Estetica del lavoro è lo spettacolo della merce umana (Area) -- http://www.fabpicca.net
В списке pgsql-interfaces по дате отправления: