Neo4j - 建立唯一約束



在 Neo4j 資料庫中,CQL CREATE 命令始終建立一個新的節點或關係,這意味著即使使用相同的值,它也會插入新行。根據我們的應用程式需求,對於某些節點或關係,我們必須避免這種重複。為此,我們應該使用一些資料庫約束在一個或多個節點或關係屬性上建立規則。

與 SQL 類似,Neo4j 資料庫也支援節點或關係屬性上的唯一約束。唯一約束用於避免重複記錄並執行資料完整性規則。

建立唯一約束

Neo4j CQL 提供“CREATE CONSTRAINT”命令來在節點或關係屬性上建立唯一約束。

語法

以下是 Neo4j 中建立唯一約束的語法。

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 上建立唯一約束的示例 Cypher 查詢。

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

要執行上述查詢,請執行以下步驟:

步驟 1 - 開啟 Neo4j 桌面應用程式並啟動 Neo4j 伺服器。使用 URL https://:7474/ 開啟 Neo4j 的內建瀏覽器應用程式,如下面的螢幕截圖所示。

Browser App

步驟 2 - 將所需的查詢複製並貼上到美元提示符中,然後按播放按鈕(執行查詢),如下面的螢幕截圖中突出顯示的那樣。

Create Unique

結果

執行後,您將獲得以下結果。

Added Constraint

驗證

現在,嘗試新增另一個具有冗餘 id 值的節點。在這裡,我們嘗試建立一個 id 為 002 的節點。

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

如果您執行此查詢,您將收到一條錯誤訊息,如下面的螢幕截圖所示。

Node Label Play
廣告

© . All rights reserved.