apoc.trigger.install过程
语法 |
|
||
描述 |
最终为指定数据库添加一个触发器,当发生成功的事务时,该触发器会被调用。 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
要添加触发器的数据库名称。 |
|
|
|
要添加的触发器名称。 |
|
|
|
触发时要执行的查询。 |
|
|
|
|
|
|
|
给定 Cypher 语句的参数。默认值为: |
|
返回参数 |
名称 |
类型 |
描述 |
|
|
触发器的名称。 |
|
|
|
属于该触发器的查询语句。 |
|
|
|
|
|
|
|
给定 Cypher 语句的参数。 |
|
|
|
触发器是否已安装。 |
|
|
|
触发器是否已暂停。 |
|
启用触发器
默认情况下,触发器是禁用的。我们可以通过在 apoc.conf 中设置以下属性来启用它们:
apoc.trigger.enabled=true
apoc.trigger.refresh=60000
| 选项键 | 值 | 描述 |
|---|---|---|
apoc.trigger.enabled |
true/false,默认 false |
启用/禁用该功能 |
apoc.trigger.refresh |
数字,默认 60000 |
触发集群节点间复制检查的间隔(毫秒) |
使用示例
|
有几种实现方法:
此外, |
|
安装、更新或删除触发器是最终一致性操作。因此,它们不会立即被添加/更新/删除,而是具有由 APOC 配置 |
本节中的示例基于以下在 'neo4j' 数据库中创建的图
CREATE (:Counter {count:0})
CREATE (f:Foo);
若要创建一个记录已删除节点数量的触发器,请运行以下查询
CALL apoc.trigger.install(
'neo4j',
'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 |
在配置 apoc.trigger.refresh 定义的时间过后,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 |