mysql使用函数last_insert_id() 得到刚插入记录的AUTO_INCREACE字段id
必须前一SQL为一INSERT语句,如果是其他语句,返回的ID值为零
产生的ID 每次连接后保存在服务器中。
这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。
在多用户交替插入数据的情况下max(id)显然不能用。
这就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update*作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。
深入理解请翻阅mysql源代码,查看mysql结构体的定义。
其它相关记录:
select @@IDENTITY:
String sql="select @@IDENTITY";
@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头。比如有个表A,它的自增列是id,当向A表插入一行数据后,如果插入数据后自增列的值自动增加至101,则通过select @@identity得到的值就是101。使用@@identity的前提是在进行insert操作后,执行select @@identity的时候连接没有关闭,否则得到的将是NULL值。
分享到:
相关推荐
- **MyISAM**:由于MyISAM使用独立的文件存储自动增长的ID值,即使在删除了一些记录并重启MySQL服务后,新的记录ID也会继续从上一个最大ID值加1开始计算,即第18条记录的ID将是18。 - **InnoDB**:重启MySQL服务后,...
这个特性在执行插入操作后获取新插入记录的ID时非常有用。例如,在上面的代码中,使用了`@@IDENTITY`来获取刚刚插入的记录ID: ```csharp BackBZID = Convert.ToInt32(TPMySqlHelper.GetSingle("INSERT INTO TP_BZ_...
本文将深入探讨如何利用MyBatis框架结合MySQL数据库实现批量插入功能,包括其原理、配置、代码实现以及优化策略。 ### 一、MyBatis框架简介 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级...
如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES (‘test9@163.com’, ‘99999’, ...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
在Java编程中,当我们在MySQL数据库中执行插入操作并希望获取新插入记录的自增ID时,有多种方法可以实现这一需求。以下是三种常见的方法,适用于不同的场景。 **方法一:使用PreparedStatement的RETURN_GENERATED_...
当使用DataAdapter填充DataSet或DataTable时,可以设置`AcceptChangesDuringFill`属性为`false`,然后在插入新记录后调用`GetChanges`,这将返回一个只包含新插入记录的DataTable,从中获取新ID。 7. **存储过程**...
1.mysql清空表语句后,新插入的语句会ID会以之前存在的序号记录下去,使用truncate命令清除记录,新插入的语句从1开始 示例: mysql> select id from t1; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 清空表 ...
防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,...
在PHP与MySQL交互时,有时候我们需要获取新插入记录的唯一标识,通常是自增ID。本文将详细介绍三种在PHP中获取MySQL新增记录ID值的方法,并分析它们的适用场景和潜在问题。 1. **使用SQL查询获取最大ID** 这种方法...
// 插入新记录 pRecordset->Close(); // 关闭记录集 ``` **总结** 通过上述步骤,你可以在VS2010的MFC应用程序中实现与MySQL数据库的连接,创建数据表,并进行数据插入。这只是一个基础的示例,实际应用中可能...
执行完成后,`order`对象的`id`属性将会被自动填充为刚刚插入记录的自增长ID值。 这个机制对于需要跨表关联的场景特别有用,比如在上述例子中,当我们在订单表中插入客户信息后,可以获取到新生成的订单ID,并将其...
MySQL 雪花算法生成唯一整型ID主键的实现主要针对大数据环境下,需要大量生成全局唯一ID的需求。雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性...
这样,每当用户发送一条消息,都会在MySQL数据库中创建一条新的记录。为了查询历史记录,可以编写一个API端点,从数据库中检索并返回这些记录: ```javascript app.get('/api/messages', (req, res) => { const ...
在Java编程中,JDBC(Java Database Connectivity)...正确地使用预编译的`PreparedStatement`可以提高代码的可读性和安全性,同时,通过设置`RETURN_GENERATED_KEYS`属性,我们可以轻松地获取新插入记录的自增主键值。
在 MyBatis 框架中,当我们执行一个插入(insert)操作时,有时需要获取新插入记录的自增主键值,例如数据库中的唯一标识 ID。MyBatis 提供了方便的功能来实现这一需求,这主要涉及到 `keyProperty` 和 `...
数据插入属于数据操纵语言(Data Manipulation Language, DML)的一部分,用于向数据库表中添加新记录。无论对于初学者还是经验丰富的数据库管理员来说,熟练掌握数据插入技巧都是十分重要的。 #### 插入数据的基本...
在MySQL中,当我们需要向数据库表中插入新记录时,有时我们希望避免插入已经存在的重复数据。在这种情况下,我们可以利用`IGNORE`关键字配合`INSERT`语句来实现这一功能。`IGNORE`关键字允许我们在尝试插入数据时...
在插入新记录前,该触发器会自动为每一行的新记录的`id`字段赋值为序列的下一个值。这种方式更加灵活且无需在每个插入语句中显式指定序列值。 #### 获取刚插入的ID 在Oracle中,如果需要获取刚插入的数据的ID值,...