2

我是否必须调用connection.setAutoCommit(false)才能将几个 DML 语句分组到一个事务中?我有点困惑,因为 jdbc 文档说在自动提交模式下创建了一个新连接。同时,Oracle 没有自动提交事务,如果 DML 语句不存在则开始一个新事务。因此,在我看来,connection.setAutoCommit(false)这是多余的(假设我不考虑切换到不同的 RDMS)。

有人可以澄清一下吗?

谢谢。

4

1 回答 1

3

将 autocommit 设置为 true 实际上意味着发送到数据库的每个语句都将包含在 begin/commit 中。事务将隐式启动,但也将隐式提交。下一个语句也是如此。

如果您希望多个语句成为单个事务的一部分,则需要将 autocommit 设置为 false,执行各种语句,最后显式调用 commit。

于 2011-10-23T17:41:22.543 回答