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();

但我对那个数据库没有任何经验

于 2010-04-15T17:11:15.200 回答