SQL(Java,h2):检索刚插入数据库的单个项的唯一ID的最佳方法是什么?

我目前的方法是这样的:

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

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