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 |