Re: how to determine OID of the row I just inserted???

Поиск
Список
Период
Сортировка
Искать
От
Dennis Gearon
Тема
Re: how to determine OID of the row I just inserted???
Дата
Msg-id
USXUOJYVGBXUVTI64JUPWT2Z83A7OK.3e428e48@cal-lab
Ответ на
Список
Дерево обсуждения
Re: how to determine OID of the row I just inserted??? evon600c <jcelle@deolis.com>
What someone told me was to do this:

	insert into address (street) values ('Penny Lane');
	update customer 
        set address = 
         (select id 
          from address
          where street = 'Penny Lane')
        where name = 'X';

Obviously, there can only be one id for 'Penny Lane'.


2/6/2003 6:08:17 AM, "Jules Alberts"  wrote:

>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:
>
>
>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 по дате отправления
От: Andrew Sullivan
Дата:
Сообщение: Re: password() function?
От: Dennis Gearon
Дата:
Сообщение: Re: Pg_dumpall problem
FAQ