Re: possible INSERT bug - Mailing list pgsql-bugs

From Mathew Frank
Subject Re: possible INSERT bug
Date
Msg-id 003f01c2a27a$6da7ab90$0a00a8c0@dax
Whole thread Raw
Responses Re: possible INSERT bug
List pgsql-bugs
i have the following utility function, which I use to easily return the OID
 of an the new row created by an INSERT query:
 ---
 CREATE FUNCTION insert_record_return_oid(text) RETURNS int4 AS
 ' DECLARE
     s_query ALIAS FOR $1;
     oid int4;
 BEGIN
     EXECUTE s_query;
     GET DIAGNOSTICS oid = RESULT_OID;
     RETURN oid;
 END;
 ' LANGUAGE 'plpgsql' with (ISSTRICT);
 ---

 Which correctly returns the OID of the inserted row.
 usage example:
 ---
 insert_record_return_oid('insert into sys_states (s_state) values(''po'')
 ');
 ---

 However, if I get tricky, and imbed this into a select to return the
 inserted row, I get an error:
 ---
 select * from sys_states
 where oid= insert_record_return_oid('insert into sys_states (s_state)
 values(''po'') ');
---
 "Cannot insert duplicate key" and the insert query never happens.


 This is not a problem - I just do things another way, but I was wondering
 what caused this?

 Cheers,
 Mathew

 postgresql 7.2, btw

pgsql-bugs by date:

Previous
From: Ocke Janssen
Date:
Subject: Re: OpenOffice loops calling SQLForeignKeys
Next
From: Tom Lane
Date:
Subject: Re: possible INSERT bug