1

Postgresでは、私は書くことができます

INSERT .. RETURNING *

挿入中に生成されたすべての値を取得します。Oracle、HSQLDBでは、

String[] columnNames = ...
PreparedStatement stmt = connection.prepareStatement(sql, columnNames);
// ...
stmt.execute();
stmt.getGeneratedKeys();

生成されたすべての値を取得します。MySQLは少し制限されており、に設定されている列のみを返しますAUTO_INCREMENT。しかし、Sybase SQL Anywhereでこれをどのように行うことができますか?JDBCドライバーはこれらのメソッドを実装しておらずINSERT .. RETURNING、Postgresのように句はありません。多分走る以外にそれをする方法はありますか

SELECT @@identity

挿入直後?

4

1 に答える 1

1

私の現在の実装では、3 つの連続した SQL ステートメントを実行します。

-- insert the data first
INSERT INTO .. VALUES (..)

-- get the generated identity value immediately afterwards
SELECT @@identity

-- get the remaining values from the record (possibly generated by a trigger)
SELECT * FROM .. WHERE ID = :previous_identity

ID列のみが要求されている場合、3 番目のステートメントは省略できます。

于 2011-09-04T11:11:10.543 に答える