13

私の現在の方法はこれです:

SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC

これは、最後に挿入されたアイテムが常に最大の一意の ID (主キー、自動インクリメント) を持っていることを前提としています。ここで何かがおかしい。

代替案?

4

2 に答える 2

27

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?
}
于 2010-04-15T17:33:38.863 に答える
7

MySQLを使用している場合は、次のことができます

select last_insert_id();

MS SQL を使用している場合

select scope_identity();

H2の場合、私はそれが

CALL SCOPE_IDENTITY();

しかし、私はそのDBの経験がありません

于 2010-04-15T17:11:15.200 に答える