PostgreSQL ODBC的AutoCommit模式到底是什么意思?

3
Postgresql(通过psql)似乎在每个语句之后始终自动提交,除非发出了一个begin命令,在这种情况下,它会在commit / rollback时提交。好的。
但是ODBC有一个autocommit标志,可以选择是否启用它。这是一种事务模式。这是一种不同于使用begin的模型。
那么它们如何交互呢?ODBC autocommit实际上发送任何内容到服务器吗?或者如果设置为false,则只发出隐藏的begin?假设我将autocommit设置为false,然后执行...
  -- autocommit = false in ODBC driver
  -- no explicit begin
  update 1;
  update 2;
  rollback;
  -- no begin
  update 4;
  update 5;
  rollback;

更新4会被回滚吗?我认为其他的都会被回滚。

请不要回答自动提交会在每个查询之后自动提交。这是一个(相对)复杂的问题。

1个回答

3

更新4将被回滚。

所有支持"autocommit = off"的客户端在事务结束后,在第一个语句之前向服务器发送额外的BEGIN以实现该功能。PostgreSQL本身对此毫不知情;它没有禁用自动提交的模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接