如何在neo4j中使节点属性不可变?

时间:2018-01-23 14:23:27

标签: neo4j cypher immutability

我有一个neo4j数据库(社区版),我在其中设置了一个属性的唯一性约束,我称之为“uid'与标签配对:USER。

CREATE CONSTRAINT ON (user:USER) ASSERT user.uid IS UNIQUE
但是,我想以一种方式保护这个属性,即在创建节点后不能对其进行任何更改,但仍然可以更改其他属性。怎么能这样做?

2 个答案:

答案 0 :(得分:1)

根据Neo4j constraints documentations,无法开箱即用。我相信要实现这一目标,您需要使用Neo4j Java API并编写自定义user defined procedure / function

查看GraphAware Neo4j UUID library获取灵感。根据文件:

  

Neo4j UUID库是一个透明地分配的简单库   UUID到图中的新创建的节点和关系和make   确保没有人(意外或有意)改变或删除它们。

您可以在this source code上看到针对此要求的单元测试。

答案 1 :(得分:0)

据我所知,目前在Neo4j中没有这样的东西。

有功能请求(https://github.com/neo4j/neo4j/issues/2554

您可以尝试通过编写自定义用户定义的过程或函数来强制执行不变性。