apoc.trigger.add
|
此过程不适用于集群环境,可能会出现不可预测的行为。 |
|
请注意,此过程已弃用。 请改用以下过程,它们在集群中提供更好的支持
其中 databaseName 是我们要执行触发器的数据库。 |
语法 |
|
||
描述 |
向给定的 Cypher 语句添加触发器。此过程的选择器为 {phase:'before/after/rollback/afterAsync'}。 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要添加的触发器名称。 |
|
|
|
触发时运行的查询。 |
|
|
|
|
|
|
|
给定 Cypher 语句的参数。默认值为: |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
触发器名称。 |
|
|
|
属于该触发器的查询。 |
|
|
|
|
|
|
|
给定 Cypher 语句的参数。 |
|
|
|
触发器是否已安装。 |
|
|
|
触发器是否已暂停。 |
|
启用触发器
默认情况下,触发器是禁用的。我们可以通过在 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" |
{} |
{} |
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 |