只有通过查询存在约束时,是否有任何方法可以删除约束?我正在使用javascript的bolt驱动程序。
我最初认为我会抓住错误,但我得到的错误不够明确:
{"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
但我不想以编程方式打开日志并解析它。
是否有任何方法只有在存在时才删除约束?我没有找到任何有用的东西。
我唯一能想到的是首先尝试创建两个与约束冲突的节点(返回更明确的错误),但我更喜欢更清洁的东西。
答案 0 :(得分:0)
如果您知道所需的所有索引和约束,则可以使用apoc过程apoc.schema.assert使它们存在,并删除所有其他现有索引和约束。
如何使用此过程的示例是此doc section的一部分。这是一个片段,显示对过程和结果的调用:
Let’s create some indexes and constraints, note that other indexes and constraints will be dropped by this.
CALL apoc.schema.assert(
{Track:['title','length']},
{Artist:['name'],Track:['id'],Genre:['name']});
╒════════════╤═══════╤══════╤═══════╕
│label │key │unique│action │
╞════════════╪═══════╪══════╪═══════╡
│Track │title │false │CREATED│
├────────────┼───────┼──────┼───────┤
│Track │length │false │CREATED│
├────────────┼───────┼──────┼───────┤
│Artist │name │true │CREATED│
├────────────┼───────┼──────┼───────┤
│Genre │name │true │CREATED│
├────────────┼───────┼──────┼───────┤
│Track │id │true │CREATED│
└────────────┴───────┴──────┴───────┘