カテゴリ: プログラミング
さて、続きです。
java.sql.Statementクラスには、INSERT文にて自動生成されたキーを取得するためのAPIが提供されています。それが表題のStatement#getGeneratedKeys()メソッドです。このメソッドの返り値はjava.sql.ResultSetのインスタンスになっており、そこからキーを取得できるという訳です。
MySQLならResultSet#getIntでキーを取得できます。シンプルでいいですね。ところが、Oracleだとそう単純にはいきません。同様にgetInt()すると、メモリの位置っぽい感じの謎な数字が返ってきます。getInt()ではなくgetObject()で取得して確認してみると、oracle.jdbc.ROWIDなるクラスのオブジェクトであることが分かります。
このROWID、擬似的なカラムと言いますか、ポインタと言っていいと思います。このポインタがINSERT文で生成されたカラムを差しており、コレに対してSELECT文を投げることでようやく求めるキーが得られるという訳です。
» 続きを読む
