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