我试图从“自动提交”概念中理解。
最初我在 Java JDBC API Connection.setAutoCommit(boolean autoCommit)的上下文中对此很感兴趣
快速搜索发现该术语并非特定于 JDBC,PostgreSQL 也指“自动提交”:
https://www.postgresql.org/docs/current/sql-start-transaction.html
在标准中,不必发出
START TRANSACTION
启动事务块:任何 SQL 命令都隐式地开始一个块。PostgreSQL 的行为可以被看作是在每个不跟随START TRANSACTION
(或BEGIN
)的命令之后隐式发出 COMMIT,因此它通常被称为“自动提交”。为了方便起见,其他关系数据库系统可能会提供自动提交功能。
如果它很普遍,自动提交模式的隔离级别是什么?
从概念上讲,因为在隐式隔离级别之前我们只有一个 SQL 语句COMMIT
,因此自动提交几乎没有意义。只有 READ UNCOMMITTED 可能会影响结果,其他异常是按照一系列 SQL 语句定义的。
我可以将自动提交隔离级别更改为/远离未提交的阅读吗?
默认隔离级别通过default_transaction_isolation控制,并且
read committed
在标准安装中。您可以使用以下命令检查当前设置:
由于 Postgres 不支持(或实现)
read uncommitted
,因此无需更改此“远离未提交的读取”。如果您想将隔离级别更改为“更高”级别,即使在自动提交模式下,您也可以使用:
以上将更改当前会话(=连接)的默认值。