apoc使用触发器:如apoc官网指导


  1. CREATE (d:Person {name:‘Daniel’})
  2. CREATE (l:Person {name:‘Mary’})
  3. CREATE (t:Person {name:‘Tom’})
  4. CREATE (j:Person {name:‘John’})
  5. CREATE (m:Person {name:‘Michael’})
  6. CREATE (a:Person {name:‘Anne’})
  7. CREATE (l)-[:DAUGHTER_OF]->(d)
  8. CREATE (t)-[:SON_OF]->(d)
  9. CREATE (t)-[:BROTHER]->(j)
  10. CREATE (a)-[:WIFE_OF]->(d)
  11. CREATE (d)-[:SON_OF]->(m) CREATE (j)-[:SON_OF]->(d)
  12. CALL apoc.trigger.add(‘setAllConnectedNodes’,‘UNWIND apoc.trigger.propertiesByKey({assignedNodeProperties},“surname”) as prop
  13. WITH prop.node as n MATCH(n:Person)-[]-(a) //库中不同标签的节点较多,所以较官方手册加了一个Person标签
  14. SET a.surname = n.surname’, {phase:‘after’});

使用如下的set语句构造触发条件 MATCH (d:Person {name:‘Daniel’}) SET d.surname = ‘William’

该语句执行完成后,触发器的功能已经实现了,但是为什么web页面显示一直转圈,虚机和物理机都是这样,超过5min。

apoc.trigger.enabled=true已经设置过了,而且这之后继续使用MATCH (d:Person {name:‘Daniel’}) SET d.surname = ‘Xaaa’这样的语句不起作用,person的surname是之前的William没有变成Xaaa,为什么?

按F12后发现,一直在向后台发送请求,引发数据库后台进程阻塞。个人推测为'setAllConnectedNodes'这样的触发器,在节点上添加surname属性时,它会添加到所有的连接的节点(但是添加之后又会循环触发,导致走进了一个死循环。)

解决方法:

要注意的是,这样的情况会引发数据库后台进程阻塞,需要后台重启neo4j实例,来阻止对应的阻塞进程。前端刷新并不生效。仅仅在前端刷新,会阻塞对Person标签类对象的一切操作,包括delete与set。

//修改相应的触发器语句,此时成功执行,不再阻塞,但是在前端显示不会说Set 6 //properties。仅仅显示Set 1 property,因为其他5个节点的属性是后台触发完成的。


  1. CALL apoc.trigger.add('setAllConnectedNodes','UNWIND apoc.trigger.propertiesByKey({assignedNodeProperties},"surname") as prop
  2. WITH prop.node as n
  3. MATCH(n:Person)-[]-(a:Person)
  4. where not exists(a.surname) or n.surname<>a.surname
  5. SET a.surname = n.surname', {phase:'after'});

原文地址:https://blog.csdn.net/weixin_42348333/article/details/89855189

APOC官网触发器示例执行后Web页面一直转圈的更多相关文章

  1. InfluxDB安装后web页面无法访问的解决方案

    本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 16 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 Infl ...

  2. Vue官网todoMVC示例

    这个示例是模仿官网示例样式和功能用我自己的方式写的,基本上没有看官网的源码,只参考自定义指令.让我们一步步来探讨一下.官网demo 要实现的功能 单条添加todo 单条删除todo 双击编辑todo ...

  3. Scrapy官网程序执行示例

    Windows 10家庭中文版本,Python 3.6.4,Scrapy 1.5.0, Scrapy已经安装很久了,前面也看了不少Scrapy的资料,自己尝试使其抓取微博的数据时,居然连登录页面(首页 ...

  4. 【生活】已经从官网购买iPad,单独购买AppleCare+服务

    1 什么是AppleCare+服务 从苹果官网购买的硬件产品如ipad.iphone和MacBook等,官网承诺的保修期限是一年.AppleCare+是水果公司推出的一种保修服务,最大的特点就是将保修 ...

  5. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  6. docker swarm(当前官网示例)

    介绍 Docker Swarm 是 Docker 公司推出的官方容器集群平台,基于 Go 语言实现 作为容器集群管理器,Swarm 最大的优势之一就是 100% 支持标准的 Docker API.各种 ...

  7. FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!

    开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位.   FineUI(开源版)v4.2.2 是 8 年 ...

  8. [踩过的坑]Elasticsearch.Net 官网示例的坑

    经过昨天的ElasticSearch 安装,服务以及可以启动了,接下来就可以开发了,找到了官网提供的API以及示例,Es 官方提供的.net 客户端有两个版本一个低级版本: [Elasticsearc ...

  9. Scrapy的【SitemapSpider】的【官网示例】没有name属性

    Windows 10家庭中文版,Python 3.6.4,Scrapy 1.5.0, 上午看了Scrapy的Spiders官文,并按照其中的SitemapSpider的示例练习,发现官文的示例存在问题 ...

随机推荐

  1. js反混淆

    var esprima = require('esprima') var escodegen = require('escodegen') content = "function _0x35 ...

  2. python 列表切片之负数的含义代码示例

    a = list(range(10)) print(a[::]) #复制一个列表 print(a[::2]) #每隔2个取一次 print(a[::3]) #每隔3个取一次 print(a[::-1] ...

  3. 预处理、const、static与sizeof-内联函数与宏有什么区别

    1:二者的区别如下: (1)内联函数在编译时展开,宏在预编译时展开. (2)在编译的时候,内联函数可以直接被镶嵌到目标代码中,而宏只是一个简单的文本替换. (3)内联函数可以完成诸如类型检测.语句是否 ...

  4. jwt token and shiro

    openapi可以完全开放访问,也可以使用jwt token进行简单的认证,还可以使用shiro支持更细致的权限管理. handler.yml配置了security和shiro两个handler: s ...

  5. JVM----Class类文件结构

    JVM平台无关性 Java具有平台无关性,也就是任何操作系统都能运行Java代码.之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次 ...

  6. Kafka 实践

    问题描述 配置 Kafka-client 2.x, Spring-Kafka 默认配置 Kafka 三个partition, 使用KafkaListener按group消费. 现象 某天突然发现两个p ...

  7. pi币--π币--手机离线式挖矿软件--pi中文教程!

    Pi Network派型网络,国外热度很高手机移动式挖矿软件 一个新出的手机移动式挖矿软件,在国外热度很高,国内玩的人目前很少.项目团队成员均来自斯坦福大学,三个创始人斯坦福博士教授,现在处于挖矿第一 ...

  8. Activity节点

    1.android:allowTaskReparenting Android:allowTaskReparenting是一个任务调整属性,它表明当这个任务重新被送到前台时,该应用程序所定义的Activ ...

  9. 安装heat

    在控制节点上执行 controller-heat(){mysql -uroot -p${MYSQL_PASSWD} << EOF DROP DATABASE IF EXISTS heat; ...

  10. 【FFMPEG】使用FFMPEG+H264实现RTP传输数据

    开发环境:WINDOWS7 32bitMINGWeclipse juno cdt1.首先你要编译好FFMPEG,a) 方法一:可以去官网下载源码,用MINGW编译(编译时记得支持H264,当然,事先得 ...