Hi Daryl,
Hi all,
> I asked this question a little while back too. :) I'm sure it is a
> question that comes up quite often.
> The simple answer that I got is to do:
>
> SELECT nextval(columnName);
> INSERT INTO tableName (columnName) VALUES ([result of first query]);
>
> through JDBC calls. If the insert fails, nothing is lost. No real
> need for a transaction here.
Well, so I can't use OIDs but only SEQUENCES, at least with JDBC.
> I cannot speak on whether or not getGeneratedKeys() is
> supported/implemented in the JDBC driver.
> public ResultSet getGeneratedKeys()
as well as corresponding methods like
> public int executeUpdate(String sql, String columnNames[])
are new in JDBC3.
They are not yet implemented in the PostgreSQL JDBC driver (I had a look at
the code in CVS).
To all the JDBC developers: do you think it would be possible to implement
these?
I would offer my help.
What I am thinking of is:
- do the insert
- get the OID of the inserted row (should be possible inside the driver,
right?)
- fetch the values of those fields that where requested
At least this would not require any help from the backend. On the other hand
it would still leave the question open how to decide what is considered a
generated key. I will have a look at the JDBC specs.
Best Regards,
Michael