Re: how to determine OID of the row I just inserted??? - Mailing list pgsql-general

From evon600c
Subject Re: how to determine OID of the row I just inserted???
Date
Msg-id MPG.18c99613618a7008989681@news.postgresql.org
Whole thread Raw
In response to how to determine OID of the row I just inserted???  ("Jules Alberts" <jules.alberts@arbodienst-limburg.nl>)
List pgsql-general
hi, i think you should just use the pg_lastoid function available in C
or PHP.
in sql you can reference the last oid with :OID


In article <20030206140855.A06E21CB1D9@koshin.dsl.systemec.nl>,
jules.alberts@arbodienst-limburg.nl says...
> Hello everybody,
>
> Here's a question I have asked some time ago and Google tells me I'm
> not the only one with this problem, but I haven't found a solution yet
> :-(. I have a setup like this:
>
>     customer {id serial, name varchar, address bigint}
>     person   {id serial, name varchar, address bigint}
>     address  {id serial, street varchar}
>
>     customer.address points to address.id
>     person.address points to address.id
>
> So, addresses are stored in a seperate table, customer.address and
> person.address should have a value that exists in address.id. When I
> add an address for customer X, I must do something like:
>
>     insert into address (street) values ('Penny Lane');
>     update customer set address = ??? where name = 'X';
>
> If I would do this in pgsql there would be no problem, because the OID
> is echoed when the update succeeds. But I use PHP or pl/pgsql (others
> have exactly the same problem with JDBC) and I know of no way to solve
> this. Something like lastval() IMHO is way too risky. I need something
> like a return value:
>
>     catchOID = returnQueryOID('insert into address (street)
>         values ('Penny Lane'));
>     update customer set address = 'select id from address where
>         oid = catchOID' where name = 'X';
>
> Sorry for any syntax errors in my examples (it's half semi code), I
> hope you understand the problem. If somebody knows a good solution, IMO
> this would be something to put in a FAQ, because exactly the same
> question arises when you do an insert on a table where the primary key
> is generated automatically and you want to show the result after the
> row is updated (which is very common).
>
> TIA for any help, I really need a solution...
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>

pgsql-general by date:

Previous
From: Dmitry Tkach
Date:
Subject: Re: postgres error reporting
Next
From: "Jan Gravgaard"
Date:
Subject: Warning: Supplied argument is not a valid PostgreSQL link resource