Hi,

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?

Thank you very much,

Markus


Wed, 29 Aug 2001 11:15:08 +0200
Markus Wagner <wagner@imsd.uni-mainz.de>
getting the oid for a new tuple in a BEFORE trigger
Mark,

The responses to your problem are gonna be kinda slow, as 2/3 of the
core team, and many of the users, are at the Expo right now (and if
anyone on the list is in the SF Bay Area, join us!  BOF session
tonight!)

> 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.

What problem?  

> 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.

Once again, why?

> Is there any way (even hack) to get the oid the newly inserted tuple
> will 
> receive?

This specific answer will have to come from someone else.  

I could suggest a couple of workarounds, if you gave a fuller
description of exactly what you're trying to accomplish.

-Josh Berkus

P.S. Please do not cross-post to more than 2 lists at a time.  The
Postgres lists have been kept to a managable volume to date; let's keep
it that way.


______AGLIO DATABASE SOLUTIONS___________________________
                                       Josh Berkus
  Complete information technology      josh@agliodbs.com
   and data management solutions       (415) 565-7293
  for law firms, small businesses        fax 621-2533
    and non-profit organizations.      San Francisco
Wed, 29 Aug 2001 07:38:00 -0700
"Josh Berkus" <josh@agliodbs.com>
Re: getting the oid for a new tuple in a BEFORE trigger
On Wed, Aug 29, 2001 at 11:15:08AM +0200, Markus Wagner wrote:
> Hi,
> 
> 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?
> 
> Thank you very much,
> 
> Markus
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
> 
> end of the original message

Read section 24.2.5.4 'Obtaining other results status' of the Programmer's
Guide. This is for the PL/pgSQL language, though.

	Francesco Casadei

Thu, 30 Aug 2001 11:05:23 +0200
Francesco Casadei <f_casadei@libero.it>
Re: [SQL] getting the oid for a new tuple in a BEFORE trigger
Markus Wagner writes:

> 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'.

A less hackish way to do this might be using a sequence object for the
primary key and fetch the next sequence value manually.

-- 
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter


Thu, 30 Aug 2001 15:28:10 +0200 (CEST)
Peter Eisentraut <peter_e@gmx.net>
Re: getting the oid for a new tuple in a BEFORE trigger