Connection.setTransactionIsolation(int)
警告:
Note: If this method is called during a transaction, the result is implementation-defined.
这就引出了一个问题:如何在 JDBC 中开始一个事务?很清楚如何结束一个事务,但不知道如何开始。
如果 Connection
在事务内部开始,我们应该如何在事务外部调用 Connection.setTransactionIsolation(int)
以避免特定于实现的行为?
最佳答案
回答我自己的问题:
- JDBC connections从启用自动提交模式开始,其中每个 SQL 语句都隐式地与一个事务划界。
- 希望每个事务执行多个语句的用户必须转 auto-commit off .
- 更改自动提交模式会触发当前事务的提交(如果有的话)。
-
Connection.setTransactionIsolation()
如果启用了自动提交,则可以随时调用。 - 如果禁用自动提交,
Connection.setTransactionIsolation()
只能在事务之前或之后调用。在事务中间调用它会导致未定义的行为。
见 JDBC Tutorial通过甲骨文。
关于java - 如何在 JDBC 中启动事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940648/