Re: getting the oid for a new tuple in a BEFORE trigger

Vadim Mikheev <vmikheev@sectorbase.com>

From: "Mikheev, Vadim" <vmikheev@SECTORBASE.COM>
To: "'Markus Wagner'" <wagner@imsd.uni-mainz.de>, pgsql-general@postgresql.org, pgsql-sql@postgresql.org, pgsql-hackers@postgresql.org
Date: 2001-08-31T16:45:49Z
Lists: pgsql-hackers
> we need to control database changes within BEFORE triggers.
> There is no problem with triggers called by update, but there is
> a problem with triggers called by insert.
> 
> We strongly need to know the oid of a newly inserted tuple.
> In this case, we use tg_newtuple of the TriggerData structure
> passed to thetrigger function, and its t_data -> t_oid will
> have the value '0'.
> 
> Using BEFORE and AFTER triggers would make our lives much harder.
> 
> Is there any way (even hack) to get the oid the newly
> inserted tuple will receive?

Just set t_data->t_oid = newoid() - this is what backend does
in heapam.c:heap_insert().

Vadim