【发布时间】:2012-11-02 01:06:36
【问题描述】:
我在问自己,在一批INSERTs 之后,是否可以在WHERE 子句中使用SELECT 和LAST_INSERT_ID() 而不会在表中获得损坏的数据?我正在考虑多个用户同时做同样事情的场景。我开发了一个 JSF 应用程序,在该应用程序中可以实现这种情况。
在硬代码中,INSERTs 之后的 SELECT 如下所示:
preparedstatement.addBatch(
"INSERT INTO table1(all the FIELDS)"
+ "VALUES(null, ...);"
);
preparedstatement.addBatch(
"INSERT INTO table2(all the FIELDS)"
+ "VALUES(null, LAST_INSERT_ID(), ...);"
);
preparedstatement = connect.prepareStatement(
"SELECT id FROM table3 WHERE id = LAST_INSERT_ID();"
);
preparedstatement.executeBatch();
resultSet = preparedstatement.executeQuery();
在这个实现中遇到问题还是有更好的方法?
最好的问候
【问题讨论】:
-
看看这个页面 ;) stackoverflow.com/questions/4224228/…
-
我在此页面上看到的唯一内容是从
connect.preparedStatement()获取密钥,但在我的情况下,我需要从批处理中获取密钥。 -
对不起,我误解了你的问题......请看下面的答案