多数据库事务:mysql、SQL server和PHP

多数据库事务:mysql、SQL server和PHP,php,mysql,sql,sql-server,yii,Php,Mysql,Sql,Sql Server,Yii,我正在用YII/PHP构建一个代码,它与两个数据库(MYSQL和sqlserver)通信 有两种操作正在进行: 写入MYSQL和SQL Server。有没有办法使它们原子化 目前我正在做以下工作: $tran1=...$db->beginTransaction(); .....db1...code $tran2=$db2->beginTransaction(); ........ $tran1->commit(); $tran2->commit(); 想知道是否有办法

我正在用YII/PHP构建一个代码,它与两个数据库(MYSQL和sqlserver)通信

有两种操作正在进行: 写入MYSQL和SQL Server。有没有办法使它们原子化

目前我正在做以下工作:

$tran1=...$db->beginTransaction();
.....db1...code

$tran2=$db2->beginTransaction();
........
$tran1->commit();
$tran2->commit();
想知道是否有办法使它们原子化?嵌套事务无法工作,因为这是两个不同的服务器

谢谢


R

总有这样的风险:你犯了一个错误,而另一个失败了,然后你就有麻烦了

因此,我在这里唯一能想到的补充是,首先确保一个事务可以首先提交,然后再尝试另一个事务
MySQL
没有检查事务状态的功能,但是SQL server有:。这使您几乎可以确定SQL事务是可提交的,因此您可以先试用MySQL事务,如果失败,仍然是安全的

如何“优化”您的伪代码:

$result = $sqlDb->query('SELECT XACT_STATE()');
if ($result == 1)
{
   $mysqlDb->commit();
   $sqlDb->commit();
}
else
   rollback both;
我还没试过,所以我这边没有担保:)