SELECT @max_id := MAX(id) FROM tab1;
INSERT INTO tab1(id,name) VALUES(@max_id,'');
我可以告诉你, 封装在事务中运行一定没有问题.

解决方案 »

  1.   

    START TRANSACTION;
    SELECT @max_id := MAX(id) FROM tab1;
    INSERT INTO tab1(id,name) VALUES(@max_id,'');
    COMMIT;
      

  2.   

    try {
    connRemoteMysql.setAutoCommit(false);
    stmt = connRemoteMysql.createStatement();
    stmt.executeUpdate("SELECT @max_id := MAX(id) FROM tab1");
    stmt.executeUpdate("INSERT INTO tab1(id,name) VALUES(@max_id,'')");
    connRemoteMysql.commit();

    catch (SQLException ex) {
    prt("SQLException: " + ex.getMessage());
    try {
    if (connRemoteMysql != null){
    prt("Rolling back transaction");
    connRemoteMysql.rollback();
    }
    }
    catch(SQLException rx) {
    prt("SQLException - rollback() failed: " + rx.getMessage());
    }
    }
    finally {
    if (connRemoteMysql != null && !(connRemoteMysql.isClosed())) { connRemoteMysql.setAutoCommit(true);
    }
    }