APOC官網觸發器示例執行後Web頁面一直轉圈

2022-06-11 21:00:19 字數 1658 閱讀 7163

apoc使用觸發器:如apoc官網指導

create (d:person )

create (l:person )

create (t:person )

create (j:person )

create (m:person )

create (a:person )

create (l)-[:daughter_of]->(d)

create (t)-[:son_of]->(d)

create (t)-[:brother]->(j)

create (a)-[:wife_of]->(d)

create (d)-[:son_of]->(m) create (j)-[:son_of]->(d)

call apoc.trigger.add(『setallconnectednodes』,『unwind apoc.trigger.propertiesbykey(,「surname」) as prop

with prop.node as n match(n:person)--(a) //庫中不同標籤的節點較多,所以較官方手冊加了乙個person標籤

set a.surname = n.surname』, );

使用如下的set語句構造觸發條件 match (d:person ) set d.surname = 『william』

該語句執行完成後,觸發器的功能已經實現了,但是為什麼web頁面顯示一直轉圈,虛機和物理機都是這樣,超過5min。

apoc.trigger.enabled=true已經設定過了,而且這之後繼續使用match (d:person ) set d.surname = 『xaaa』這樣的語句不起作用,person的surname是之前的william沒有變成xaaa,為什麼?

按f12後發現,一直在向後台傳送請求,引發資料庫後台程序阻塞。個人推測為'setallconnectednodes'這樣的觸發器,在節點上新增surname屬性時,它會新增到所有的連線的節點(但是新增之後又會迴圈觸發,導致走進了乙個死迴圈。)

解決方法:

要注意的是,這樣的情況會引發資料庫後台程序阻塞,需要後台重啟neo4j例項,來阻止對應的阻塞程序。前端重新整理並不生效。僅僅在前端重新整理,會阻塞對person標籤類物件的一切操作,包括delete與set。

//修改相應的觸發器語句,此時成功執行,不再阻塞,但是在前端顯示不會說set 6 //properties。僅僅顯示set 1 property,因為其他5個節點的屬性是後台觸發完成的。

call apoc.trigger.add('setallconnectednodes','unwind apoc.trigger.propertiesbykey(,"surname") as prop

with prop.node as n

match(n:person)--(a:person)

where not exists(a.surname) or n.surname<>a.surname

set a.surname = n.surname', );

mysql 觸發器示例 MySQL觸發器示例 8

什麼是觸發器 需求 出於審計目的,當有人往表users插入一條記錄時,把插入的uid,uname,插入動作和操作時間記錄下來。delimiter create trigger tr users insert after insert onusersforeach rowbegin insert in...

觸發器 示例

本例阻止使用者修改employees表中的employeeid列。use northwind gocreate trigger employee update on employees for update asif update employeeid begin raiserror transac...

mysql 觸發器示例

一些操作會觸發的函式。如更新 增刪改 rule hzq all 或 b rule table 表的時候,我們希望對更新操作做記錄。這種情況使用觸發器,使用者對 rule hzq all 有更新操作時,觸發記錄函式。create table update history bussiness varch...