postgresql - Postgresql ODBC 自动提交模式的真正含义是什么

标签 postgresql transactions odbc

Postgresql(通过 psql)似乎总是在每个语句之后自动提交,除非已发出开始,在这种情况下它会在提交/回滚时提交。很好。

但 ODBC 有一个自动提交标志,表示执行或不执行。交易的一种模式。这是一个不同于 using begins 的模型。

那么他们是如何互动的呢? ODBC autocommit 是否真的向服务器发送任何内容,或者如果设置为 false,它是否只是发出一个隐藏的开始?假设我有自动提交错误,然后做

  -- autocommit = false in ODBC driver
  -- no explicit begin
  update 1;
  update 2;
  rollback;
  -- no begin
  update 4;
  update 5;
  rollback;

更新 4 会回滚吗?我假设其他人都回滚了。

拜托,不要说自动提交会在每次查询后自动提交。这是一个(相对)复杂的问题。

最佳答案

更新 4 将被回滚。

所有支持“autocommit = off”的客户端通过在事务结束后的第一个语句之前向服务器发送额外的 BEGIN 来实现。 PostgreSQL 本身并没有注意到这一点;它没有禁用自动提交的模式。

关于postgresql - Postgresql ODBC 自动提交模式的真正含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69308373/

相关文章:

php - 无法让 odbc 在 apache 中工作

postgresql - 将 `postgres -D/usr/local/var/postgres` 放入终端时返回此结果

testing - Web应用程序中的事务处理场景模拟

postgresql - 我怎样才能在psql中查询。如果列名像 camelCase

javascript - 处理数据库事务返回

database - 获取在 Postgresql 中执行查询的详细信息

不使用 DSN 时出现 R ODBC nanodbc 错误

windows - 更改 kerberos 票证缓存位置

HikariCP 的 Postgresql 性能问题

arrays - array_agg() 的替代品?