0

Connection#setAutoCommit()的 javadocs如下所示,加粗的是我的:

将此连接的自动提交模式设置为给定状态。如果连接处于自动提交模式,则其所有 SQL 语句将作为单独的事务执行和提交。否则,它的 SQL 语句将被分组为通过调用方法提交或方法回滚终止的事务。默认情况下,新连接处于自动提交模式。

语句完成时发生提交。语句完成的时间取决于 SQL 语句的类型:

  • 对于 DML 语句(例如 Insert、Update 或 Delete)和 DDL 语句,语句在执行完毕后即告完成。
  • 对于 Select 语句,当关联的结果集关闭时,该语句就完成了。
  • 对于 CallableStatement 对象或返回多个结果的语句,当所有关联的结果集都已关闭并且已检索所有更新计数和输出参数时,该语句就完成了。

这是否意味着当 autoCommit 打开时(几乎总是应该如此),如果我从表中选择一行,我的 Connection 对象或其他任何东西将在该行/表上保持锁定,直到 ResultSet 关闭?

如果是这样,这是否意味着我可以选择一行,并且如果我对列的值感到满意,只要我在更新之后不关闭 ResultSet,就将行全部更新为一个原子操作?

4

0 回答 0