gpt4 book ai didi

php - 使用 PDO,有没有办法处理两个驱动程序之间的事务?

转载 作者:行者123 更新时间:2023-11-29 12:54:50 25 4
gpt4 key购买 nike

所以,假设我同时使用两个驱动程序(在特定的 mysql 和 sqlite3 中)

我有一组更改,只有当两个 dbms 都没有失败时,才必须在两个连接上进行 commit() 处理,或者在其中一个失败时进行 rollBack() 处理:

<?php

interface DBList
{
function addPDO(PDO $connection);

// calls ->rollBack() on all the pdo instances
function rollBack();

// calls ->commit() on all the pdo instances
function commit();

// calls ->beginTransaction() on all the pdo instances
function beginTransaction();
}

问题是:它真的有效吗?有道理吗?

“为什么不只使用 mysql?”你会说!我不是受虐狂!我需要 mysql 通过我的应用程序实现经典成果,但我还需要保留一个始终同步的表的副本,并且该副本也是可下载和可移植的!

提前非常感谢您!

最佳答案

我怀疑你是本末倒置!如果

  1. 两个数据库同步
  2. 事务在一个数据库上成功提交
  3. 未发生操作系统级错误

那么事务也将在第二个数据库上成功提交。

所以你想要做的是:- 在MySQL上启动事务- 记录所有改变数据的SQL(见下文)- 在MySQL上提交事务- 如果提交有效,则针对 SQlite 运行记录的 SQL- 如果没有,则回滚 MySQL

警告:仅当两个数据库上的事务序列相同时,上述假设才有效。因此,您可能希望将 SQL 记录到 MySQL 表中,该表与其他表遵循相同的事务逻辑。这将为您完成序列化工作。

关于php - 使用 PDO,有没有办法处理两个驱动程序之间的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com