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
 

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to