Neo4j CQL - UNIQUE约束
在Neo4j数据库中,CQL CREATE命令始终创建新的节点或关系,这意味着即使您使用相同的值,它也会插入一个新行。 根据我们对某些节点或关系的应用需求,我们必须避免这种重复。 然后我们不能直接得到这个。 我们应该使用一些数据库约束来创建节点或关系的一个或多个属性的规则。
像SQL一样,Neo4j数据库也支持对NODE或Relationship的属性的UNIQUE约束
UNIQUE约束的优点
- 避免重复记录。
- 强制执行数据完整性规则。
Neo4j CQL UNIQUE约束操作
- 创建UNIQUE约束
- 丢弃UNIQUE约束。
我们将在本章中用示例讨论创建UNIQUE约束操作。
创建UNIQUE约束
Neo4j CQL已提供“CREATE CONSTRAINT”命令,以在NODE或关系的属性上创建唯一约束。
创建唯一约束语法
CREATE CONSTRAINT ON (<label_name>) ASSERT <property_name> IS UNIQUE
语法说明:
S.No. | 语法元素 | 描述 |
---|---|---|
1。 | CREATE CONSTRAINT ON | 它是一个Neo4j CQL关键字。 |
2。 | <label_name> | 它是节点或关系的标签名称。 |
3。 | ASSERT | 它是一个Neo4j CQL关键字。 |
4。 | <property_name> | 它是节点或关系的属性名称。 |
5。 | IS UNIQUE | 它是一个Neo4j CQL关键字,通知Neo4j数据库服务器创建一个唯一约束。 |
注意:-
上述语法描述了它的<PROPERTY_NAME> <LABEL_NAME>节点或关系创造了一个独特的约束。
示例-
此示例演示如何在CreditCard节点的number属性上创建UNIQUE约束。
注: -在这里我们将检查两种情况。
- 如果数据库包含重复的CreidtCard节点。
- 如果数据库不包含重复的CreidtCard节点。
步骤1 -在数据浏览器中键入以下命令
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.name,cc.expiredate,cc.cvv
步骤2 -点击执行按钮,观察结果。
步骤3 -在数据浏览器中的dollar提示符下键入以下命令。
CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE
然后,如果我们尝试在number属性上创建UNIQUE约束,那么它会抛出错误,表示重复节点可用
首先,使用DELETE命令删除重复记录。 在数据浏览器上键入以下命令
MATCH (cc:CreditCard) WHERE cc.number = 222222 DELETE cc
步骤1 -在数据浏览器中的dollar提示符下键入以下命令。
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.name,cc.expiredate,cc.cvv
CREATE (cc:CreditCard {id:22,number:222222,name:'BBB' ,expiredate:'10/10/2017',cvv:222})
它创建一个节点,编号= 222222.现在我们执行以下命令形式数据浏览器,以确认我们的数据库不包含重复节点的CreditCard
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.name,cc.expiredate,cc.cvv
CREATE CONSTRAINT ON (cc:CreditCard) ASSERT cc.number IS UNIQUE
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.name,cc.expiredate,cc.cvv
我们可以观察到一个约束被添加到数据库。
这里我们在CreditCard节点的number属性上创建了一个UNIQUE约束。 因为根据我们的客户要求,CreditCard号码应该是唯一的。
如果应用程序尝试插入重复的CreditCard号码,Neo4j DB服务器将会抛出一个错误,表示数据库中已存在相同的数字。
示例-
此示例演示如何检查CreditCard节点的number属性上的UNIQUE约束是否正常工作。
步骤1 -在数据浏览器中的dollar提示符下键入以下命令。
MATCH (cc:CreditCard) RETURN cc.id,cc.number,cc.name,cc.expiredate,cc.cvv
步骤3 -在数据浏览器中的dollar提示符下键入以下命令。
CREATE (cc:CreditCard {id:22,number:222222,name:'BBB', expiredate:'10/10/2017',cvv:222})