代码之家  ›  专栏  ›  技术社区  ›  Daddy Warbox

SQL(Java,H2):检索刚刚插入到数据库中的单个项的唯一ID的最佳方法是什么?[副本]

  •  13
  • Daddy Warbox  · 技术社区  · 15 年前

    这个问题已经有了答案:

    我目前的方法是:

    SELECT TOP 1 ID FROM DATAENTRY ORDER BY ID DESC
    

    这假定最新插入的项始终具有最高的唯一ID(主键、自动增量)。这里有异味。

    选择?

    2 回复  |  直到 15 年前
        1
  •  26
  •   BalusC    15 年前

    如果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?
    }
    
        2
  •  6
  •   Sean    15 年前

    如果使用MySQL,可以

    select last_insert_id();
    

    如果使用MS SQL

    select scope_identity();
    

    对于H2,我相信

    CALL SCOPE_IDENTITY();
    

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