有没有什么方法可以只删除通过查询存在的约束?我使用的是javascript的螺栓驱动程序。
我最初以为我只会捕捉到错误,但我得到的错误不够清楚:
{"code":"Neo.DatabaseError.Schema.ConstraintDropFailed"}
{ Error: An unexpected failure occurred, see details in the database logs, reference number .... }
在日志中,我确实得到:
Unable to drop CONSTRAINT ... No such constraint CONSTRAINT
但我不想以编程方式打开日志并解析它。
有没有办法只在约束存在时才删除它?我还没有找到任何有用的东西。
我能想到的唯一方法是先尝试创建两个与约束冲突的节点(这会返回更明显的错误),但我更喜欢更干净的方法。
2条答案
按热度按时间g2ieeal71#
如果您知道所需的所有索引和约束,则可以使用apoc过程apoc.schema.assert使它们存在,并删除所有其他现有索引和约束。
此文档部分提供了一个如何使用此过程的示例。以下是显示调用此过程及其结果的代码片段:
jecbmhm32#
您可以在语句末尾运行add
IF EXISTS
:正式文件:https://neo4j.com/docs/cypher-manual/5/constraints/examples/#administration-constraints-drop-a-non-existing-constraint