how to determine OID of the row I just inserted???
От | Jules Alberts |
---|---|
Тема | how to determine OID of the row I just inserted??? |
Дата | |
Msg-id | 20030206140855.A06E21CB1D9@koshin.dsl.systemec.nl обсуждение исходный текст |
Ответы |
Re: how to determine OID of the row I just inserted???
Re: how to determine OID of the row I just inserted??? Re: how to determine OID of the row I just inserted??? |
Список | pgsql-general |
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...
В списке pgsql-general по дате отправления: