ローカルで neo4j DB を作成し、いくつかのインデックスと一意の制約を割り当てました。
スキーマは次のとおりです。
Indexes
ON :Actor(social_id) ONLINE (for uniqueness constraint)
ON :Category(name) ONLINE (for uniqueness constraint)
Constraints
ON (actor:Actor) ASSERT actor.social_id IS UNIQUE
ON (category:Category) ASSERT category.name IS UNIQUE
さらに、Java コードで createIfNotFound() を実行します。最初に検索を行い、見つからない場合は作成します。
これらの 2 つのチェックにもかかわらず、ラベル カテゴリの複数のノードと同じ名前が DB に存在していることがわかります。
MATCH (n:Category) WHERE n.name='garden' RETURN n
name garden
name garden
name garden
name garden
Returned 4 rows in 49 ms.
何が欠けているのかわかりません。また、一意の制約が尊重されないのはなぜですか。