Neo4j-一意の制約を作成する

Neo4jデータベースでは、CQL CREATEコマンドは常に新しいノードまたは関係を作成します。つまり、同じ値を使用しても、新しい行が挿入されます。一部のノードまたは関係のアプリケーション要件に従って、この重複を回避する必要があります。このために、いくつかのデータベース制約を使用して、ノードまたは関係の1つ以上のプロパティに関するルールを作成する必要があります。

SQLと同様に、Neo4jデータベースもノードまたはリレーションシッププロパティのUNIQUE制約をサポートします。UNIQUE制約は、レコードの重複を回避し、データ整合性ルールを適用するために使用されます。

UNIQUE制約を作成する

Neo4j CQLは、ノードまたは関係のプロパティに一意の制約を作成するための「CREATECONSTRAINT」コマンドを提供します。

構文

以下は、Neo4jでUNIQUE制約を作成するための構文です。

MATCH (root {name: "Dhawan"}) 
CREATE UNIQUE (root)-[:LOVES]-(someone) 
RETURN someone

例を進める前に、以下に示すように4つのノードを作成します。

CREATE(Dhawan:player{id:001, name: "shikar Dhawan", YOB: 1995, POB: "Delhi"}) 
CREATE(Jonathan:player {id:002, name: "Jonathan Trott", YOB: 1981, POB: "CapeTown"}) 
CREATE(Sangakkara:player {id:003, name: "Kumar Sangakkara", YOB: 1977, POB: "Matale"}) 
CREATE(Rohit:player {id:004, name: "Rohit Sharma", YOB: 1987, POB: "Nagpur"}) 
CREATE(Virat:player {id:005, name: "Virat Kohli", YOB: 1988, POB: "Delhi"})

以下は、Neo4jを使用してプロパティIDにUNIQUE制約を作成するためのサンプルCypherクエリです。

CREATE CONSTRAINT ON (n:player) ASSERT n.id IS UNIQUE

上記のクエリを実行するには、次の手順を実行します-

Step 1− Neo4jデスクトップアプリを開き、Neo4jサーバーを起動します。URLを使用してNeo4jの組み込みブラウザーアプリを開きますhttp://localhost:7474/ 次のスクリーンショットに示すように。

Step 2 −目的のクエリをコピーしてドルプロンプトに貼り付け、次のスクリーンショットで強調表示されている再生ボタンを押します(クエリを実行します)。

結果

実行すると、次の結果が得られます。

検証

ここで、冗長ID値を持つ別のノードを追加してみてください。ここでは、IDを持つノードを作成しようとしています002

CREATE (Jadeja:player {id:002, name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})

このクエリを実行すると、次のスクリーンショットに示すようなエラーメッセージが表示されます。