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

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

INSERT 使用 LAST 插入 339    来源:    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();

LAST_INSERT_ID() 函数会返回最后插入的自增ID值。

2. 在编程语言中使用相应的API

如果你是通过编程语言(如Python、PHP、Java等)与MySQL交互,大多数数据库驱动或ORM框架都提供了获取最后插入ID的方法。

Python (使用 mysql-connector-python)

import mysql.connector

conn = mysql.connector.connect(user='username', password='password', host='localhost', database='dbname')
cursor = conn.cursor()

cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", ('value1', 'value2'))
last_id = cursor.lastrowid

print("Last Inserted ID:", last_id)

conn.commit()
cursor.close()
conn.close()

PHP (使用 mysqli)

$mysqli = new mysqli("localhost", "username", "password", "dbname");

$query = "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')";
$mysqli->query($query);

$last_id = $mysqli->insert_id;

echo "Last Inserted ID: " . $last_id;

$mysqli->close();

Java (使用 JDBC)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class Main {
    public static void main(String[] args) throws Exception {
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/dbname", "username", "password");
        PreparedStatement pstmt = conn.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()) {
            int lastId = rs.getInt(1);
            System.out.println("Last Inserted ID: " + lastId);
        }

        rs.close();
        pstmt.close();
        conn.close();
    }
}

3. 使用 OUTPUTRETURNING 子句(MySQL不支持)

需要注意的是,MySQL不支持 OUTPUTRETURNING 子句(这些是SQL Server或PostgreSQL中的特性)。在MySQL中,你只能使用 LAST_INSERT_ID() 或通过编程语言的API来获取自增ID。

总结

  • 在MySQL命令行中,使用 LAST_INSERT_ID() 函数。
  • 在编程语言中,使用相应的API(如 lastrowidinsert_idgetGeneratedKeys 等)来获取最后插入的自增ID。

这些方法可以帮助你在插入数据后轻松获取自增ID。