如何处理neo4jphp中的事务?

时间:2014-04-23 08:17:49

标签: php transactions neo4j neo4jphp

对于像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();

1 个答案:

答案 0 :(得分:1)

检查以下代码。

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

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

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

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

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

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

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

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

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

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

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

$transaction->commit();

有关详细信息,请参阅Cypher-Transactions