插件窝 干货文章 MySQL命令行插入数据后如何获取自增ID?

MySQL命令行插入数据后如何获取自增ID?

插入 INSERT 会话 LAST 992    来源:    2025-03-13

在MySQL中,当你向一个带有自增主键(AUTO_INCREMENT)的表中插入数据时,可以通过以下几种方式获取刚刚插入的自增ID。

1. 使用 LAST_INSERT_ID() 函数

在MySQL命令行中,插入数据后,你可以立即使用 LAST_INSERT_ID() 函数来获取最后插入的自增ID。

INSERT INTO your_table (column1, column2, ...) VALUES (value1, value2, ...);
SELECT LAST_INSERT_ID();

2. 在同一个会话中使用

LAST_INSERT_ID() 函数返回的是当前会话中最后插入的自增ID。因此,如果你在同一个会话中执行插入操作,然后立即调用 LAST_INSERT_ID(),它将返回正确的值。

3. 在编程语言中使用

如果你是通过编程语言(如PHP、Python、Java等)与MySQL交互,通常这些语言的MySQL库会提供获取最后插入ID的方法。

  • PHP:

    $stmt = $pdo->prepare("INSERT INTO your_table (column1, column2) VALUES (?, ?)");
    $stmt->execute([$value1, $value2]);
    $lastInsertId = $pdo->lastInsertId();
    
  • Python (using mysql-connector-python):

    cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", (value1, value2))
    last_insert_id = cursor.lastrowid
    
  • Java (using JDBC):

    PreparedStatement pstmt = connection.prepareStatement("INSERT INTO your_table (column1, column2) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS);
    pstmt.setString(1, value1);
    pstmt.setString(2, value2);
    pstmt.executeUpdate();
    ResultSet rs = pstmt.getGeneratedKeys();
    if (rs.next()) {
      long lastInsertId = rs.getLong(1);
    }
    

4. 注意事项

  • LAST_INSERT_ID() 是会话特定的,不同会话之间的插入操作不会影响彼此的 LAST_INSERT_ID() 值。
  • 如果插入操作没有生成新的自增ID(例如,插入失败或插入的数据没有触发自增),LAST_INSERT_ID() 将返回0。

通过以上方法,你可以在MySQL命令行或编程语言中轻松获取刚刚插入的自增ID。