Postgresql ODBC 自动提交模式的真正含义是什么
What does Postgresql ODBC AutoCommit mode really mean
Postgresql(通过 psql)似乎总是在每个语句之后自动提交,除非已发出开始,在这种情况下它会在 commit/rollback 上提交。很好
但是 ODBC 有一个自动提交标志,表示执行或不执行。交易的一种模式。这是与使用 begins 不同的模型。
那么他们是如何互动的呢? ODBC autocommit 是否真的向服务器发送任何内容,或者如果设置为 false,它是否只是发出一个隐藏的开始?假设我有 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(通过 psql)似乎总是在每个语句之后自动提交,除非已发出开始,在这种情况下它会在 commit/rollback 上提交。很好
但是 ODBC 有一个自动提交标志,表示执行或不执行。交易的一种模式。这是与使用 begins 不同的模型。
那么他们是如何互动的呢? ODBC autocommit 是否真的向服务器发送任何内容,或者如果设置为 false,它是否只是发出一个隐藏的开始?假设我有 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 本身并没有注意到这一点;它没有禁用自动提交的模式。