java - 在java中获取数据库表的最后插入记录id?

标签 java mysql jdbc

<分区>

我有一个存储记录的数据库表A,A有一个带auto_increment的主键(recordid),每次我向A插入一条记录,我都会得到插入的recordid并将它存储在另一个masterTable中。

我在插入 A 后立即使用 select 语句来获取 recordid,如下所示:

通过recordid DESC LIMIT 1从A订单中选择recordid;

但是我今天遇到了一个问题,同时插入了两条记录(由不同的线程),我最终在主 ID 中存储了错误的记录 ID(两个 txns 的记录 ID 相同)

我听说了 Statement.getGeneratedKeys(),我想知道这是否真的有助于解决问题。或者处理此问题的最佳方法是什么。

最佳答案

您可以使用 getGeneratedKeys方法。这forum post会有帮助。

我还可以建议您使用像 Hibernate 这样的 ORM 工具吗? .在 Hibernate 中你会做这样的事情:

myTable = new myTable();
myTable.prop1 = prop1;
myTable.prop2 = prop2;
int id = session.save(myTable);

Hibernate 将发出适当的 SQL 命令(取决于所选的数据库)并返回给您自动生成的 ID。

关于java - 在java中获取数据库表的最后插入记录id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1699761/

相关文章:

java - 我需要标准化位图并将其存储在 TensorImage 中。有什么办法可以做到这一点吗?

php - mysql_fetch_array 未获取完整数据?

java - JNDI:如何使用逻辑非查询来搜索 LDAP

java - 从纸张裁切尺寸格式中提取宽度和高度

mysql - 如何检查变量是否等于数据库表中某一列的一部分?

sql - 在字符串上查询sql

java - 结果集到集合

mysql - Phpstorm数据库: java. sql.SQLException:通信链路故障

java - JDBC 创建表

Java:删除选定的行结果集,而是从数据库中删除最后一行?