我想做这样的事情(ruby,cypher查询):
//获取节点1 上的写锁定
//一些先读后写的代码,例如:
results = neo.query("MATCH (n {id: 1}) RETURN n")
...
case results.size
when 0
neo.create_node(properties)
when 1
neo.update_node(results.first, properties)
...
//释放节点1 上的写锁定
根据文献,http://docs.neo4j.org/chunked/stable/transactions-isolation.html:
默认情况下,读取操作将读取最后提交的值,除非当前事务中存在本地修改。默认的隔离级别与READ_COMMITTED非常相似:读取不会阻塞或获取任何锁,因此可能发生不可重复的读取。通过手动获取读写锁,可以实现更强的隔离级别(如REPETABLE_READ和SERIALIZABLE)。
http://docs.neo4j.org/chunked/stable/transactions.html:
可以手动获取节点和关系上的写锁,以实现更高级别的隔离(SERIALIZABLE)。
但是,关于如何获取锁或如何更改隔离级别,却没有提及任何内容。
目前不支持通过REST API覆盖默认的READ_COMMITTED
隔离级别。只有使用嵌入Java应用程序中的Neo4j,才能实现手动覆盖隔离级别。
我们将在您引用的文档页面上添加一条注释,使其更加清晰。