Re: looking for a jdbc method. - Mailing list pgsql-jdbc

From Craig Ringer
Subject Re: looking for a jdbc method.
Date
Msg-id 48C8824B.5060401@postnewspapers.com.au
Whole thread Raw
In response to looking for a jdbc method.  ("Krishnan Trikkadeeri" <trikkadeerikrishnan@yahoo.in>)
Responses Re: looking for a jdbc method.  (Craig Ringer <craig@postnewspapers.com.au>)
List pgsql-jdbc
Krishnan Trikkadeeri wrote:
> Hi,
>
> The JDBC API at the Sun website describes a two-parameter version of the method 'prepareStatement' in the interface
'Connection' with capability to retrieve auto-generated keys. One of the samples in the Sun JDBC Tutorial site also use
thismethod.  
>
> Is this method available in the postgresql jdbc driver? I have not been able to locate it so far.
> If it is not implemented as yet, is there any plan to implement this method any time soon?

A few seconds on Google turns up:

http://archives.postgresql.org/pgsql-jdbc/2004-09/msg00191.php

http://groups.google.com/group/comp.databases.postgresql.interfaces.jdbc/browse_frm/thread/eae4d9b44d566bcf?hl=en&lr&ie=UTF-8&c2coff=1&safe=off&rnum=3&prev=%2Fgroups%3Fq%3Dgenerated%2Bkeys%26hl%3Den%26lr%3D%26ie%3DUTF-8%26group%3Dcomp.databases.postgresql.interfaces.jdbc%26c2coff%3D1%26safe%3Doff%26selm%3DPine.LNX.4.33.0312301523060.5331-100000%2540leary.csoft.net%26rnum%3D3

They're pretty ancient, but has a good discussion of the issues.

You should be able to use INSERT ... RETURNING to achieve the effect
you're going for without the issues involved in using the two-argument
prepareStatement interface.

I haven't looked into the current status of the interface. It's broken
by design and should really be deprecated in the JDBC spec, so it's not
all that interesting.

INSERT statements for which the two-argument prepareStatement's return
value makes no sense include:

-- INSERT using query value-source
INSERT INTO sometable SELECT something FROM othertable;

-- Multi-valued INSERT
INSERT INTO sometable (x, y, z) VALUES
(1,2,3),
(1,4,6),
(1,9,2),
(4,2,1),
(9,1,4);

INSERT ... RETURNING can provide sane results for these cases.

See, for example:

http://archives.postgresql.org/pgsql-jdbc/2007-03/msg00090.php

--
Craig Ringer

pgsql-jdbc by date:

Previous
From: "Krishnan Trikkadeeri"
Date:
Subject: looking for a jdbc method.
Next
From: Craig Ringer
Date:
Subject: Re: looking for a jdbc method.