【发布时间】:2014-10-30 07:52:06
【问题描述】:
假设对于某些节点,属性上定义了唯一的约束。
克隆节点时,我们将属性从原始节点复制到克隆节点,然后修改克隆节点上的唯一属性。
但是,neo4j 表现出急切的约束评估,并且一旦将独特属性从原始节点复制到克隆节点,它似乎就会失败。
有没有办法将约束评估与事务结束不同?
或者一些可以暂时缓解问题的解决方法。
用于说明问题的示例密码:
-
为属性 id 上标记为 y 的节点创建唯一约束。
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]
【问题讨论】: