在MySQL中,当你向一个带有自增主键(AUTO_INCREMENT)的表中插入数据时,可以通过以下几种方式获取刚刚插入的自增ID。
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。因此,如果你在同一个会话中执行插入操作,然后立即调用 LAST_INSERT_ID()
,它将返回正确的值。
如果你是通过编程语言(如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);
}
LAST_INSERT_ID()
是会话特定的,不同会话之间的插入操作不会影响彼此的 LAST_INSERT_ID()
值。LAST_INSERT_ID()
将返回0。通过以上方法,你可以在MySQL命令行或编程语言中轻松获取刚刚插入的自增ID。