在Neo4j数据库中,CQL CREATE命令始终创建新的节点或关系,这意味着即使您使用相同的值,它也会插入一个新行。 根据我们对某些节点或关系的应用需求,我们必须避免这种重复。 然后我们不能直接得到这个。 我们应该使用一些数据库约束来创建节点或关系的一个或多个属性的规则。
像SQL一样,Neo4j数据库也支持对NODE或Relationship的属性的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约束。
注: -在这里我们将检查两种情况。
步骤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})
MongoDB 的关系表示多个文档之间在逻辑上的相互联系。文档间可以通过嵌入和引用来建立联系。MongoDB 中的关系可以是:1:1 (1对1)...
查询是对数据结果的请求,也是对数据的操作。您可以使用查询来回答简单问题,执行计算,组合来自不同表的数据,或者甚至添加,更...
Redis Lpushx 命令Redis 列表(List)Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。语法 redis Lpu...
Redis Rpoplpush 命令Redis 列表(List)Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。语...
Redis Pgmerge 命令 Redis HyperLogLog Redis Pgmerge 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog ...
Redis Cluster Slots 命令 Redis 服务器 Redis Client Slots 命令用于当前的集群状态,以数组形式展示。语法 redis Client Slots...
Redis Eval 命令 Redis 脚本 Redis Eval 命令使用 Lua 解释器执行脚本。语法 redis Eval 命令基本语法如下:redis 127.0.0.1:637...
Redis Evalsha 命令 Redis 脚本 Redis Evalsha 命令根据给定的 sha1 校验码,执行缓存在服务器中的脚本。语法 redis Evalsha 命...