删除约束

约束可使用 DROP CONSTRAINT 命令删除。可以删除在不同 Cypher® 版本中创建的约束。例如,尽管在 Cypher 25 中加入了 VECTOR 属性类型约束,但仍可使用 Cypher 5 删除此类约束。

有关删除约束的完整命令语法,请参阅 语法 → 删除约束。本页删除的约束是在页面 创建约束 中创建的。

删除约束需要 DROP CONSTRAINT 权限

按名称删除约束

可以使用名称通过 DROP CONSTRAINT constraint_name 命令删除约束。所有约束类型使用相同的命令。约束的名称可通过 SHOW CONSTRAINTS 命令 在输出列 name 中找到。

示例 1. 按名称删除约束
删除约束 book_isbn
DROP CONSTRAINT book_isbn
结果
Removed 1 constraint.

节点关系元素类型 中作为 图类型 的一部分创建的约束,无法使用 DROP CONSTRAINT constraint_name 命令删除。这包括以下约束

  • 针对标识节点标签或关系类型的属性存在性和属性类型约束

  • 节点标签存在性约束

  • 关系源和目标标签约束

这些约束只能通过删除完整的节点或关系元素类型来删除。更多信息,请参阅 删除节点和关系元素类型

使用参数删除约束

约束可以使用参数化的名称删除。

示例 2. 使用参数删除约束
参数
{
  "name": "actor_fullname"
}
使用参数化名称删除约束
DROP CONSTRAINT $name
结果
Removed 1 constraint.

删除不存在的约束

如果不确定是否存在给定名称的约束,并且希望在存在时删除而在不存在时不产生错误,请使用 IF EXISTS。这将确保不会抛出错误,而是返回一条信息性通知,说明该约束不存在。

示例 3. 删除不存在的约束
删除不存在的约束 missing_constraint_name
DROP CONSTRAINT missing_constraint_name IF EXISTS
结果
(no changes, no records)
通知
`DROP CONSTRAINT missing_constraint_name IF EXISTS` has no effect. `missing_constraint_name` does not exist.