IDENTITYフィールド以外のJavaでデータベース生成値を取得する方法はありますか?私は簡単にResultSetからIDENTITY値を得ることができますが、データベース(CURRENT_TIMESTAMP)によって生成された日付フィールドの値を取得したいと思います。私は日付を取得する別のSELECTクエリを送信しないことを好む。ResultSetの一部としてCURRENT_TIMESTAMPを取得
statement = connection.prepareStatement("INSERT INTO foo (bar_date) VALUES (CURRENT_TIMESTAMP)");
ResultSet generatedKey = statement.getGeneratedKeys();
while (generatedKey.next()) {
// read the key..., this unfortunately only returns IDENTITY columns.
}
偉大な、うまく動作します。私はこれを行うためのデータベースに依存しない方法はないと仮定します(
Max
@Max - OUTPUT節はANSI標準の一部ではないように見えるので、SQLサーバーのみです。他のデータベースエンジンは独自の実装を持つことができます。 Oracleには 'RETURNING'があります。これはPostgresも実装しています。 2005年以前のMSSQLやsqliteに相当するものはありません。最も移植性の高い方法は、結果セット(または出力パラメータ)を返すストアドプロシージャ内でロジックをラップすることですが、各RDBMSのSP実装の違いによりデータベースには依存しません。 –
もう一度ありがとうございます。私はそれを考慮に入れます。 – Max