我有一个存储记录的数据库表A,A有一个带auto_increment的主键(recordid),每次我将记录插入A,我得到插入的记录并将其存储在另一个masterTable中.
我正在使用select语句,因为我在A中插入以获取这样的记录:
通过recordid DESC LIMIT 1从A订单中选择recordid;
但我今天遇到了一个问题,在同一时间插入两个记录(由不同的线程),我最终在主id中存储了错误的记录ID(两个txns的记录都相同)
我听说过Statement.getGeneratedKeys(),我想知道这是否真的有助于解决问题.或者什么是处理这个问题的最佳方法.
您可以使用getGeneratedKeys方法.这个论坛帖子会有所帮助.
我还建议你使用像Hibernate这样的ORM工具.在Hibernate中你会做这样的事情:
myTable = new myTable();
myTable.prop1 = prop1;
myTable.prop2 = prop2;
int id = session.save(myTable);
Run Code Online (Sandbox Code Playgroud)
Hibernate将发出适当的SQL命令(取决于所选的数据库)并返回自动生成的id.
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |