|| apoc.trigger.add - APOC 核心文档 - Neo4j 文档

apoc.trigger.add

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

请注意,此过程已弃用。

请改用以下过程,它们在集群中提供更好的支持

已弃用过程

新过程

apoc.trigger.add(name STRING, statement STRING, selector MAP<STRING, ANY>, config MAP<STRING, ANY>)

apoc.trigger.install(databaseName STRING, name STRING, statement STRING, selector MAP<STRING, ANY>, config MAP<STRING, ANY>)

apoc.trigger.remove(name STRING)

apoc.trigger.drop(databaseName STRING, name STRING)

apoc.trigger.removeAll()

apoc.trigger.dropAll(databaseName STRING)

apoc.trigger.pause(name STRING)

apoc.trigger.stop(databaseName STRING, name STRING)

apoc.trigger.resume(name STRING)

apoc.trigger.start(databaseName STRING, name STRING)

其中 databaseName 是我们要执行触发器的数据库。

详情

语法

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

© . This site is unofficial and not affiliated with Neo4j, Inc.