如何有条件地删除密码中的约束



我正在尝试查询一个特定的约束,如果它存在,请删除它,否则我什么都不想做,继续前进

SHOW CONSTRAINTS YIELD name, labelsOrTypes, properties
WHERE labelsOrTypes = ["NodeLabel"] AND properties = ["targetProperty"]
WITH name
CALL apoc.when(
name IS NOT NULL,
'DROP CONSTRAINT name',
'',
{name: name}
) YIELD value;

这会产生一个错误Invalid input 'WITH'。移除WITH得到Invalid input 'CALL'。返回name属性会出现同样的错误。

Neo4J在其文档中列出;SHOW CONSTRAINTS的输出列之一是约束的名称。这可用于通过drop constraint命令删除约束"删除APOC调用并执行以下操作也会导致错误:

SHOW CONSTRAINTS YIELD name, labelsOrTypes, properties
WHERE labelsOrTypes = ["PublicToken"] AND properties = ["token"]
DROP CONSTRAINT name

这条消息告诉了我Invalid input 'd',所以似乎不能在显示约束后立即使用DROP CONSTRAINT。我错过了什么?这个命令是不是不能在脚本中使用,必须手动使用?

是的,SHOW CONSTRAINTS是一个命令,我们不能将其用作子查询或管道,也不能将其输出与其他Cypher子句一起用于实现某些功能。

本文档提供了SHOW CONSTRAINTS的完整语法,您可以看到WITH不受支持。对于该命令,如果不存在返回语句,则YIELD充当RETURN。因此,在列出约束条件后,您必须手动运行DROP CONSTRAINT

相关内容

  • 没有找到相关文章

最新更新