apoc.trigger.add

此过程不适用于集群环境,使用时可能会出现不可预期的行为。

在 APOC 2025.06 版本中,该过程已从 APOC 核心库中移除。请改用 apoc.trigger.install

如果您使用的是 APOC 2025.06 或更高版本,该过程在 Cypher 25 中不可用,但仍可与 Cypher 5 一起使用。有关更多信息,请参阅 APOC 和 Cypher 版本

详细信息

语法

apoc.trigger.add(name, statement, selector [, config ]) :: (name, query, selector, params, installed, paused)

描述

为指定的 Cypher 语句添加触发器。此过程的选择器为 {phase:'before/after/rollback/afterAsync'}。

输入参数

名称

类型

描述

名称 (name)

STRING

要添加的触发器名称。

statement

STRING

触发时运行的查询语句。

selector

MAP

{ phase = "before" :: ["before", "rollback", "after", "afterAsync"] }

config

MAP

给定 Cypher 语句的参数。默认值为:{}

返回参数

名称

类型

描述

名称 (name)

STRING

触发器的名称。

query

STRING

属于该触发器的查询语句。

selector

MAP

{ phase = "before" :: ["before", "rollback", "after", "afterAsync"] }

params

MAP

给定 Cypher 语句的参数。

installed

布尔值 (BOOLEAN)

触发器是否已安装。

paused

布尔值 (BOOLEAN)

触发器是否已暂停。

启用触发器

默认情况下,触发器是禁用的。我们可以通过在 apoc.conf 中设置以下属性来启用它们:

apoc.conf
apoc.trigger.enabled=true
apoc.trigger.refresh=60000
描述
选项键 描述

apoc.trigger.enabled

true/false,默认 false

启用/禁用该功能

apoc.trigger.refresh

数字,默认 60000

触发集群节点间复制检查的间隔(毫秒)

使用示例

本节中的示例基于以下图数据

CREATE (:Counter {count:0})
CREATE (f:Foo);

让我们创建一个触发器,用于统计已被删除节点的数量

CALL apoc.trigger.add(
  'count-removals',
  'MATCH (c:Counter)
   SET c.count = c.count + size([f IN $deletedNodes WHERE id(f) > 0])',
  {}
);
结果
名称 (name) query selector params installed paused

"count-removals"

MATCH (c:Counter) SET c.count = c.count + size([f IN $deletedNodes WHERE id(f)  0])

{}

{}

TRUE

FALSE

现在我们删除 Foo 节点

MATCH (f:Foo)
DELETE f;
结果
0 rows available after 20 ms, consumed after another 0 ms
Deleted 1 nodes

最后,让我们检查 Counter 节点上的 count 属性是否已增加

MATCH (c:Counter)
RETURN c.count as count;
结果
count

1