ソースは以下のような感じです。
Class.forName( ”org.postgresql.Driver” );
Connection con = DriverManager.getConnection(
”jdbc:postgresql:xxx”, ”xxxxxxx”, ”xxxxxxxk” );
Statement stmt = con.createStatement();
String sql = ”insert into (”〜”) VALUES(”〜”)”;
stmt.executeUpdate( sql );
stmt.close();
con.close();
ちょっとトリッキーかもしれませんが、プリマリーキーになるフィールドが serial 型であれば、
そのフィールドのデフォルト値として使われているシーケンス値を使う方法があります。
BEGIN;
INSERT INTO test (data) VALUES (’test’);
SELECT currval(’test_id_seq’);
COMMIT;
http://php.s3.to/man/function.pg-last-oid.html
直近の行のオブジェクト ID を返す
PHP や他の言語でも、OID というフィールドで、今 INSERT したレコードを特定できる値を
取得できます。ただ、JDBC で取得できるかどうかは分かりませんでした(多分、無理?)。
ただし、そのテーブルが CREATE TABLE 時に WITHOUT OIDS が指定されているテーブルには
使えません。
また、OID をユニークキーの様に扱うことは、あまり推奨できない(将来にわたって、
使えるかどうかは分からない)といったことを読んだことがあります。
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-September/002386...
[pgsql-jp: 27244] Re: JDBCでgetlastoid
私自身は Java に疎いので、細かいことは分かりませんが、前述の oid を
Java で取得する方法はあるようです。
ありがとうございます!
ありがとうございます!