对于像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
如何处理neo4jphp中的交易?
我尝试过但是有失败。即使在保存了回滚更改后也是如此。
我这样做。
//$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();
答案 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