![]() |
1
8
是的,这是可能的;它被称为 distributed transaction 。它是通过以下方式实现的 two-phase commit 在MySQL和PostgreSQL(以及我所听说的所有RDBMS)中。 其思想是在两个并发数据库会话上启动事务。当您必须在一个事务中回滚时,您也会在另一个事务中回滚。 一旦你完成了工作 准备 两项交易。这是一个特殊的过程,它完成了实际提交以外的所有工作,因此可以保证后续提交工作正常。此外,必须持久化这样一个准备好的事务,以便它能够在崩溃中生存下来。 如果数据库上的准备步骤失败,则回滚这两个事务。 一旦成功准备好所有事务,就可以提交它们。这永远不会失败,因为所有的“艰苦工作”都是在准备过程中完成的。 您需要一个协调该工作的组件。该组件称为 事务管理器 并且必须保持每个事务的状态,以便即使工作因崩溃或其他原因中断,也可以继续处理。此组件确保提交或回滚所有事务。 PostgreSQL和MySQL中的SQL语句不同:
有关详细信息,请参阅文档 PostgreSQL 和 MySQL . |
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |