从一个表中获取最后一个插入的自动增量id,然后再次插入到另一个表中

chhkpiq4  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(333)

mysql中get last inserted auto increment id的重复问题
我正在创建一个组 M_GROUPS . M_GROUPS 表格:

GROUP_ID INT AUTO_INCREMENT, 
GROUP_CREATOR_ID INT

从会话中删除。
我要把它拿走 GROUP_ID 以及 GROUP_CREATOR_ID 并将其插入 M_GROUP_MEMBERS 表组件

GROUP_ID INT,
MEMBER_ID INT.

我的问题是我不能取自动增值 GROUP_IDM_GROUPS ```
public void groupCreation(String groupname, int grouptype, int creator_id) {

DatabaseService oDatabaseService = new DatabaseService();
Connection connection = oDatabaseService.connect();
try {
    Statement stmt = null;
    stmt = connection.createStatement();
    String sql;

    sql = "INSERT INTO M_GROUPS( GROUP_NAME, GROUP_CREATOR_ID,
                                 GROUP_TYPE, CREATION_TIME)"
        + " VALUES ('"
        + groupname
        + "','"
        + creator_id
        + "','"
        + grouptype + "',NOW())";

    //stmt.executeUpdate(sql);
    stmt.executeUpdate(sql);
} catch (SQLException se) {
    se.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        if (connection != null)
            connection.close();
    } catch (SQLException se) {
        se.printStackTrace();
    }
}

}

sqxo8psd

sqxo8psd1#

使用 getGeneratedKeys() 你的方法 Statement 对象来标识新的自动生成的值。迭代返回的 ResultSet 对象以按批处理语句的顺序获取新生成的键值。
更改:

stmt.executeUpdate(sql);

收件人:

int rowsAffected = 
  stmt.executeUpdate( sql, Statement.RETURN_GENERATED_KEYS );  
ResultSet rs = stmt.getGeneratedKeys();  

//******************************************************
// in case of batch insert, you can check how many are inserted
rs.last();  
int rows = rs.getRow();  
System.out.println( "Generated keys count: " + rows );  
//******************************************************/  

int currentRow = 1;  
rs.beforeFirst();  
while( rs.next() ) {  
    System.out.println( /**/( currentRow++ ) + " = " + /**/rs.getInt( 1 ) );  
} // while rs

一旦在变量中有了这个自动生成的键值,就可以将它与其他sql语句一起使用,以存储在其他表中。
注意:呼叫 getGeneratedKeys() 可能抛出 java.sql.SQLFeatureNotSupportedException ,如果您使用的jdbc驱动程序不支持此方法。

相关问题