在Neo4j中强制不存在关系

时间:2018-05-15 20:54:07

标签: neo4j

在Neo4j中,是否有一种方法可以强制标签X的节点未连接到标签Y的节点?

例如,如果有人试图运行查询,例如:

MERGE (:X)-[:SOME_RELATIONSHIP]->(:Y)

有没有办法保证这样的查询会失败?

谢谢!

1 个答案:

答案 0 :(得分:0)

Neo4j的约束目前不支持关系存在或限制,所以你需要做一些额外的工作。

如果您有APOC程序,可以register a trigger进行评估以检查正在创建的关系是否连接这些标签的两个节点并使用apoc.util.validate()生成错误,该错误将失败并回滚事务。

如果你想在没有APOC的情况下这样做,那就更多了,因为你需要创建一个TransactionEventHandler,然后是一个内核扩展来加载你的事件处理程序。 Here's a blog entry on this approach