【发布时间】:2014-12-07 18:34:35
【问题描述】:
将 AutoCommit 设置为 false 时;这是否意味着我必须在我的应用程序中执行每个 sql 命令后提交。
这是一个场景
SQL1 不需要是事务。 SQL2 需要是一个事务。
如果我将 AutoCommit 设置为 false,这是否意味着我必须更改所有代码,并在每个类似 SQL1 的命令之后加上“commit”?
【问题讨论】:
将 AutoCommit 设置为 false 时;这是否意味着我必须在我的应用程序中执行每个 sql 命令后提交。
这是一个场景
SQL1 不需要是事务。 SQL2 需要是一个事务。
如果我将 AutoCommit 设置为 false,这是否意味着我必须更改所有代码,并在每个类似 SQL1 的命令之后加上“commit”?
【问题讨论】:
当您想要单独执行 SQL 语句时,将 AutoCommit 设置为 true。每条 SQL 语句都会在其各自的事务中自动执行。
当您想将多个 SQL 语句捆绑到一个事务中并在所有 SQL 语句都执行后提交事务时,请将 AutoCommit 设置为 false。
按照我阅读documentation 的方式,当您执行第一个SQL 语句时,会隐式创建一个事务。如果AutoCommit 设置为true,则它会立即提交,或者如果AutoCommit 设置为false,则继续接受进一步的SQL 语句到事务中直到您手动提交。
【讨论】:
Connection#setAutocommit,或者确保所有连接在创建时都有autocommit = false,这取决于创建时发送给驱动程序管理器的参数连接。