我想删除带有子节点(65,66,67)的节点(64)以及此图中的关系: Graph image
start n=node(64)
match (e)-[r]->(n)
match (n)-[r2*]->(e2)
delete r
foreach (rel in r2| delete rel)
DELETE n, e2
获取例外:
javax.transaction.HeuristicRollbackException: Failed to commit transaction Transaction(1336, owner:"qtp1613738960-605")[STATUS_NO_TRANSACTION,Resources=1], transaction rolled back ---> Node record Node[66,used=false,rel=141,prop=-1,labels=Inline(0x0:[]),light] still has relationships
如何更改查询以进行修复?
答案 0 :(得分:3)
我不是密码专家,但您只能删除没有关系的节点,并且您的异常明确指出节点66仍然具有关系。问题是,你不会在65,66,67上删除传入的关系(来自左边的关系)。
我会尝试这样的事情:
START n=node(64) /*Select start node*/
MATCH ()-[r1]->(n) /*Select all incoming relationships for start node*/
MATCH (n)-[*]->(o) /*Select "outgoing" nodes at any depth*/
MATCH ()-[r2]->(o) /*Select all incoming relationships for "o", ie node 65,66,67*/
DELETE r1,r2,n,o
顺便说一下,如果您只想删除一组节点/关系,则不需要使用foreach
。一个简单的delete
就可以了。