apoc.trigger.add
This procedure is not intended to be used in a cluster environment, and may act unpredictably. |
In APOC 2025.06, this procedure was removed from the APOC Core library.
Use If you are using APOC 2025.06 or later, the procedure is not available in Cypher 25 but can still be used with Cypher 5. For more information, see APOC and Cypher versions. |
Syntax |
|
||
Description |
Adds a trigger to the given Cypher statement. The selector for this procedure is {phase:'before/after/rollback/afterAsync'}. |
||
Input arguments |
Name |
Type |
Description |
|
|
The name of the trigger to add. |
|
|
|
The query to run when triggered. |
|
|
|
|
|
|
|
The parameters for the given Cypher statement. The default is: |
|
Return arguments |
Name |
Type |
Description |
|
|
The name of the trigger. |
|
|
|
The query belonging to the trigger. |
|
|
|
|
|
|
|
The parameters for the given Cypher statement. |
|
|
|
Whether or not the trigger was installed. |
|
|
|
Whether or not the trigger was paused. |
Enable Triggers
By default triggers are disabled.
We can enable them by setting the following property in apoc.conf
:
apoc.trigger.enabled=true
apoc.trigger.refresh=60000
Option Key | Value | Description |
---|---|---|
apoc.trigger.enabled |
true/false, default false |
Enable/Disable the feature |
apoc.trigger.refresh |
number, default 60000 |
Interval in ms after which a replication check is triggered across all cluster nodes |
Usage Examples
The examples in this section are based on the following graph:
CREATE (:Counter {count:0})
CREATE (f:Foo);
Let’s create a trigger that keeps a count of the number of nodes that have been deleted:
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 |
We’ll now delete the Foo
node:
MATCH (f:Foo)
DELETE f;
0 rows available after 20 ms, consumed after another 0 ms
Deleted 1 nodes
And finally, let’s check that the count
property on our Counter
node has been incremented:
MATCH (c:Counter)
RETURN c.count as count;
count |
---|
1 |