Neo4j对延迟约束的支持
假设对于某些节点,属性具有在其上定义的唯一约束 克隆节点时,我们将属性从原始节点复制到克隆节点,然后修改克隆节点上的唯一属性 然而,neo4j表现出急切的约束求值,并且似乎在将唯一属性从原始节点复制到克隆节点时失败 是否有办法将约束计算与事务结束时区分开来 或者一些暂时可以缓解问题的解决方法 用于说明问题的示例密码:Neo4j对延迟约束的支持,neo4j,cypher,Neo4j,Cypher,假设对于某些节点,属性具有在其上定义的唯一约束 克隆节点时,我们将属性从原始节点复制到克隆节点,然后修改克隆节点上的唯一属性 然而,neo4j表现出急切的约束求值,并且似乎在将唯一属性从原始节点复制到克隆节点时失败 是否有办法将约束计算与事务结束时区分开来 或者一些暂时可以缓解问题的解决方法 用于说明问题的示例密码: 为属性id上标记为y的节点创建唯一约束 create constraint on (y:y) assert y.id is unique; 创建几个y节点 create (y:
create constraint on (y:y) assert y.id is unique;
create (y:y{id: 1}) return y;
create (y:y{id: 2}) return y;
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]
MATCH(y:y)
WITH max(y.id) AS maxid
MATCH (lasty:y { id : maxid})
UNWIND range(1, 10) AS i
CREATE (nexty)
SET nexty = lasty
SET nexty.id = lasty.id + 1
SET nexty :y
RETURN nexty
这将创建不带标签的新节点,传输和更新属性,然后添加标签
恩典与和平
吉姆,你的推荐很好用。填充节点属性后最后添加标签可以解决此问题。