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

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

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

解释: - your_table 是你的表名。 - column1, column2 是表中的列名。 - value1, value2 是你要插入的值。 - LAST_INSERT_ID() 函数返回最后插入的自增ID。

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

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

示例:Python (使用 mysql-connector-python)

import mysql.connector

# 连接数据库
conn = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='test')
cursor = conn.cursor()

# 插入数据
query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
values = ('value1', 'value2')
cursor.execute(query, values)

# 获取自增ID
last_insert_id = cursor.lastrowid
print("Last Insert ID:", last_insert_id)

# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()

示例:PHP (使用 PDO)

<?php
$dsn = 'mysql:host=127.0.0.1;dbname=test';
$username = 'root';
$password = 'password';

try {
    $conn = new PDO($dsn, $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 插入数据
    $sql = "INSERT INTO your_table (column1, column2) VALUES (:value1, :value2)";
    $stmt = $conn->prepare($sql);
    $stmt->execute([':value1' => 'value1', ':value2' => 'value2']);

    // 获取自增ID
    $lastInsertId = $conn->lastInsertId();
    echo "Last Insert ID: " . $lastInsertId;
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
?>

3. 使用 RETURNING 子句(MySQL 8.0+)

在MySQL 8.0及以上版本中,你可以使用 RETURNING 子句来返回插入的记录,包括自增ID。

INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2') RETURNING id;

注意: RETURNING 子句在MySQL 8.0及以上版本中可用。

总结

  • 在MySQL命令行中,使用 LAST_INSERT_ID() 是最常见的方式。
  • 在编程语言中,使用对应的API(如 lastrowidlastInsertId)来获取自增ID。
  • 如果你使用的是MySQL 8.0及以上版本,可以考虑使用 RETURNING 子句。

根据你的具体使用场景选择合适的方法。