今天尝试通过
select last_insert_id()
来获取last insert id,但客户端打点发现结果不对:
lastrowid= 111654761 INSERT INTO `message_message2tag` (`tag_id`, `message_id`) VALUES (?, ?) lastrowid= 111654762 INSERT INTO `message_message2tag` (`tag_id`, `message_id`) VALUES (?, ?) lastrowid= 111654763 INSERT INTO `message_message2tag` (`tag_id`, `message_id`) VALUES (?, ?) lastrowid= 111654764 INSERT INTO `message_message2tag` (`tag_id`, `message_id`) VALUES (?, ?) lastrowid= 38968438 INSERT INTO `search_needtoindex` (`oid`, `otype`, `is_delete`) VALUES (?, ?, ?) lastrowid= 38968438 INSERT INTO `message_messagecontent` (`id`, `msg`) VALUES (?, ?) lastrowid= 94356472 INSERT INTO `mblog_star` (`user_id`, `count`, `object_id`, `add_datetime`, `category`) VALUES (?, ?, ?, ?, ?) lastrowid= 94356473 INSERT INTO `mblog_star` (`user_id`, `count`, `object_id`, `add_datetime`, `category`) VALUES (?, ?, ?, ?, ?) lastrowid= 63628816 INSERT INTO `broadcast_status` (`user_id`, `object_id`, `add_datetime`, `category`) VALUES (?, ?, ?, ?) remote gfw http://192.168.172.9:7788/fdb/match/ taking 5 ms at 04-06 22:03:09 lastrowid= 71250683 INSERT INTO `message_message` (`recipient_id`, `sender_id`, `group_id`, `album_id`, `parent_id`, `reply_count`, `favorite_count`, `like_count`, `flag`, `last_replied_datetime`, `add_datetime`, `gmt_updated`, `buyable`, `photo_id`, `status`, `category`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 尝试使用spring jdbc GeneratedKeyHolder
KeyHolder keyHolder = new GeneratedKeyHolder(); writeJdbc.update(new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement ps = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS); for (int i = 0; i < params.length; ++i) { ps.setObject(i + 1, params[i]); } return ps; } }, keyHolder); return keyHolder.getKey().longValue();
相关推荐
在MySQL数据库中,LAST_INSERT_ID()函数是一个非常实用的工具,尤其在处理多表关联或者需要获取最新插入记录的自增ID时。该函数的主要作用是返回最近一次执行的INSERT或UPDATE语句对具有AUTO_INCREMENT属性的列所...
在MySQL中,`last_insert_id()` 是一个非常有用的函数,它允许我们获取最后一条INSERT操作自动生成的ID值。这个函数通常与具有自动增长特性的主键字段一起使用,例如INT类型的`id`字段,当插入新记录时,MySQL会自动...
在MySQL数据库操作中,了解如何正确获取最新插入记录的ID是一项重要的技能,特别是当你需要在事务处理或多线程环境中确保数据一致性时。标题提到的"MYSQL 小技巧 — LAST_INSERT_ID"着重讨论了MySQL中获取自增ID的两...
MySQL数据库管理系统中,LAST_INSERT_ID() 函数和 mysql_insert_id() 函数都可以用来获取最近一次INSERT操作生成的自增ID值。在PHP开发中,正确地使用这两个函数对于确保数据一致性及避免并发问题至关重要。本知识...
在使用Hibernate JPA进行数据操作时,我们可能会遇到一个特定的情况,即在执行完插入(insert)操作后,系统会自动执行一个`select last_insert_id()`的查询来获取刚刚生成的自增主键值。这个问题在Spring MVC集成...
这意味着即使有多个用户同时操作,每个用户也能正确地获取到自己的新插入记录的ID。但是,需要注意的是,`mysql_insert_id()`在处理`bigint`类型的ID时可能存在兼容性问题。 3. **使用MySQL的`LAST_INSERT_ID()`...
为了确保正确获取这个ID,你需要确保`LAST_INSERT_ID()`函数和`INSERT`操作在同一个数据库连接(Connection)中执行,以保证它们在一个事务内。 在Java JDBC中,通常会将`INSERT`操作和获取`LAST_INSERT_ID()`放在...
总结来说,`LAST_INSERT_ID()`和`@@IDENTITY`是两种用于获取新插入数据ID的方法,它们分别适用于MySQL和SQL Server。在设计和编写数据库操作的代码时,理解这些函数的工作原理以及它们在并发环境中的行为是非常重要...
在执行插入操作后,我们需要获取这个新生成的ID以便后续处理。 在C#中,我们可以使用ADO.NET库来连接和操作数据库。以下是一个简单的步骤说明: 1. **建立数据库连接**:首先,你需要创建一个SqlConnection对象,...
当多个并发线程尝试获取新的ID时,每个线程都会锁定表中的特定行,然后通过`LAST_INSERT_ID()`获取当前的ID并增加它。这样可以确保在并发情况下ID的唯一性和顺序性。不过,这种方法需要谨慎使用,因为它可能会增加锁...
如果你使用的是MySQLi扩展来连接MySQL数据库,可以使用`mysqli_insert_id()`函数来获取最后插入行的ID。这个函数会返回与当前连接相关的最后一个自动递增ID。例如: ```php $conn = new mysqli("localhost", ...
在进行数据库操作时,确保正确获取新插入数据的ID对于保持数据一致性至关重要。合理使用上述方法,可以有效地避免数据混乱,提高应用程序的稳定性和可靠性。同时,了解这些方法的限制和适用场景,有助于编写更健壮的...
当使用SQL Server作为数据库时,`SCOPE_IDENTITY()`函数是获取最后由同一作用域内的INSERT语句生成的自动递增ID的最常见方法。它返回的是在同一事务或批处理中插入的最后一条记录的ID,确保了返回值的唯一性。 2. ...