SQL(Java,h2):检索我刚刚插入到数据库中的单个项目的唯一ID的最佳方法是什么?
我目前的方法是这样的:
SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC
这假定最新插入的项始终具有最高的唯一 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();
但我对那个数据库没有任何经验