假设我的DB中有两个不同的节点:
(p:person {name: "Claudia"})-[:likes]->(h:hobby {name: "football", experience: "2 years"})
我的目标是使每个人的爱好独特的name
属性,但在同一时间,我希望能够创建另一个(h:hobby {name: "football"})
节点,相关的一些其他person
,这将是2个不同的节点(这很重要!).
我怎么能这么做呢?
我试过:
CREATE CONSTRAINT FOR (h:hobby),(p:person) REQUIRE (p:person)-[:likes]->(h.name) IS UNIQUE
但它甚至不工作,给我:
Invalid input '(': expected ")" or an identifier (line 2, column 6 (offset: 24))
"FOR ((h:hobby),(p:person))"
2条答案
按热度按时间bihw5rsg1#
一种选择是稍微更改数据模型(不知道这对您来说是否可行),以便使Hobby对所有人都是唯一的。因此,只有一个名为“football”的Hobby节点,所有喜欢足球的人都会指向同一个节点。这样,您就可以对Hobby的名称进行唯一性约束。
使用此模型,您可以将experience属性移到关系中(以便LIKES关系具有experience属性)。
然而,这不会阻止同一个人节点与同一个爱好有多个LIKES关系,但至少同一个爱好只存在一次。
q9yhzks02#
不能在节点-关系-节点组合上创建
CONSTRAINT
。它可以在创建关系的DML语句中强制执行。举例来说:
这是假设这个爱好可能还不存在。