0
假设对于某些节点,属性具有在其上定义的唯一约束。对延迟约束的Neo4j支持
克隆节点时,我们将属性从原始复制到克隆节点,然后修改克隆节点上的唯一属性。
但是,neo4j表现出迫切的约束评估,并且只要将独特属性从原始复制到克隆节点就会失败。
是否有办法将约束评估与交易结束进行区分?
或者一些可以缓解时间问题的解决方法。
为了说明问题的示例暗号:
创建标注在属性IDŸ节点唯一约束。
create constraint on (y:y) assert y.id is unique;
创建几个y节点。
create (y:y{id: 1}) return y; create (y:y{id: 2}) return y;
现在,尝试克隆具有最大ID的y节点,并分配新的ID。
match (y:y) with max(y.id) as maxid match (lasty:y{id: maxid}) unwind range(1, 10) as i create (nexty:y) set nexty = lasty set nexty.id = maxid + i return nexty;
以上暗号与下面的错误快速失败:
Node 5368657 already exists with label y and property "id"=[2]
吉姆,你的建议可以完美运行。填充节点属性后最后添加标签可解决问题。 – Mehul 2014-09-05 16:20:39