MariaDB LAST_INSERT_ID() 函数的基础用法与实例

MariaDB 提供了 LAST_INSERT_ID() 函数,它可以返回最近执行的 INSERT 语句为 AUTO_INCREMENT 列成功插入的第一个自动生成的值。

发布于

在数据库操作中,经常需要获取最近插入行的自增字段值。MariaDB 提供了 LAST_INSERT_ID() 函数,它可以返回最近执行的 INSERT 语句为 AUTO_INCREMENT 列成功插入的第一个自动生成的值。本文将详细介绍 LAST_INSERT_ID() 函数的用法,并通过实例演示如何在实际应用中使用它。

语法

LAST_INSERT_ID() 函数的语法如下:

LAST_INSERT_ID()

该函数没有参数,它返回最近成功插入的 AUTO_INCREMENT 列的值。如果没有成功插入行,LAST_INSERT_ID() 的值保持不变。

实例

获取最后插入的自增 ID

INSERT INTO users (username, email) VALUES ('testuser', '[email protected]');
SELECT LAST_INSERT_ID();

输出结果为:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|               10 |
+------------------+

在事务中使用

START TRANSACTION;
INSERT INTO orders (product_id, quantity) VALUES (100, 2);
SELECT LAST_INSERT_ID();
COMMIT;

输出结果为:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|               25 |
+------------------+

插入多行数据后获取第一个自增 ID

INSERT INTO messages (user_id, text) VALUES (5, 'Hello'), (5, 'World');
SELECT LAST_INSERT_ID();

输出结果为:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|               42 |
+------------------+

在同一会话中连续插入

INSERT INTO products (name, price) VALUES ('Product 1', 10.00);
SELECT LAST_INSERT_ID();
INSERT INTO products (name, price) VALUES ('Product 2', 15.00);
SELECT LAST_INSERT_ID();

输出结果为:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|               33 |
+------------------+
+------------------+
| LAST_INSERT_ID() |
+------------------+
|               34 |
+------------------+

结合其他函数使用

INSERT INTO logs (action) VALUES ('login');
UPDATE users SET last_login_id = LAST_INSERT_ID() WHERE id = CURRENT_USER();

这里 CURRENT_USER() 是假设的当前登录用户 ID 的函数。

结论

LAST_INSERT_ID() 函数是 MariaDB 中非常有用的工具,特别是在需要跟踪记录插入操作的场景中。它提供了一种简单而有效的方法来获取最新的自增 ID,无论是单条记录插入还是批量插入。通过本文的实例,我们可以看到 LAST_INSERT_ID() 在实际应用中的灵活性和便捷性。无论是进行数据追踪还是关联表操作,LAST_INSERT_ID() 都是一个不可或缺的函数。[1^]