我正在开发一个JAVA动态Web项目。我有一个共享的java.sql.Connection对象来处理每个数据库查询。在某种程度上,我需要以原子方式执行3个sql update语句。也就是说,如果一个语句无法执行,则回滚效果。更确切地说,这是我想要实现的伪代码 -
try {
create transaction T
T.execute(statement1)
T.execute(statement2)
T.execute(statement3)
T.commit()
} catch(SQLException) {
T.rollback()
}
我已经用Google搜索了这个问题,似乎每个人都建议将java.sql.Connection自动提交模式设置为false,并在执行事务后再次将其设置为true。但是如果我这样做,那么只要自动提交模式为false,那么可能已经从另一个线程执行的所有查询执行也将被添加到此事务中。我该如何解决这个问题?