私の現在の方法はこれです:
SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC
これは、最後に挿入されたアイテムが常に最大の一意の ID (主キー、自動インクリメント) を持っていることを前提としています。ここで何かがおかしい。
代替案?
JDBC ドライバーがサポートしている場合は、そのまま使用することもできますStatement#getGeneratedKeys()
。
String sql = "INSERT INTO tbl (col) VALUES (?)";
preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
preparedStatement.setString(1, col);
preparedStatement.executeUpdate();
generatedKeys = preparedStatement.getGeneratedKeys();
if (generatedKeys.next()) {
long id = generatedKeys.getLong(1);
} else {
// Throw exception?
}
MySQLを使用している場合は、次のことができます
select last_insert_id();
MS SQL を使用している場合
select scope_identity();
H2の場合、私はそれが
CALL SCOPE_IDENTITY();
しかし、私はそのDBの経験がありません