0

对于 mysql 这样的关系型数据库,PHP 中的事务处理就像。

Begin transaction
...
Insert queries
...
Update queries
...
if error in any query then
Rollback transaction
...
at end, if no error in any query then
Commit transaction

如何处理中的事务?

我尝试过同样的方法,但失败了。即使在保存回滚更改之后。

我是这样做的。

//$client = Neo4jClient
$transaction = $client->beginTransaction();
...
//Insert queries
...
//Update queries
...
//if error in any query then
$transaction->rollback();
...
// at end, if no error in any query then
$transaction->commit();
4

1 回答 1

1

检查以下代码。

//$client = Neo4jClient
$transaction = $client->beginTransaction();

$dataCypherQuery = new Query($client, $dataQuery, $params);

我们需要将语句添加到事务中,而不是从查询中获取结果集。

// $dataResult = $dataCypherQuery->getResultSet(); // don't do this for transaction

重要提示:将查询对象传递给事务的添加语句方法。

$dataResult = $transaction->addStatements($dataCypherQuery);

我们可以传递 true 作为指示事务提交的参数。

//$dataResult = $transaction->addStatements($dataCypherQuery, true);

如果出现错误,更改会自动回滚。您可以检查 $dataResult 变量的有效性,结果应该返回一些东西。

if (0 == $dataResult->count()) {
    $transaction->rollback();
}

最后,如果任何查询都没有错误,那么

$transaction->commit();

有关更多信息,请参阅密码交易

于 2014-04-23T14:43:13.787 回答