在应用程序启动时,我想确保存在索引和约束。

当我在应用程序启动时调用以下内容时,由于约束已经存在,我收到一个错误:

CREATE CONSTRAINT ON (node:MyLabel) ASSERT node.myProperty IS UNIQUE

我想确保约束存在而不会抛出错误。

有没有办法在 Cypher 中做到这一点?我正在努力在 Neo4J 文档中找到任何帮助。

最佳答案

不幸的是,Cypher 对此没有很好的支持,由于删除非断言索引和约束的副作用,即使是这里的 APOC 产品也不会很合适。

您必须对 call db.constraints()call db.indexes() 的结果进行字符串解析。

更新

在 Neo4j 的最新版本中(不确定这是在什么时候改变的),如果尝试应用已经存在的约束,它不应该抛出任何错误。

此外,较新版本的 APOC 有一个新的 dropExisting 参数,它允许您在应用新索引/约束之前控制是删除还是保留现有模式。

关于Neo4J Cypher : Ensuring constraints exist (avoiding errors if they already do),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44049851/

10-12 04:47