在Neo4j数据库中,CQL CREATE命令始终创建新的节点或关系,这意味着即使您使用相同的值,它也会插入一个新行。有时我们需要避免这种重复。 所以我们应该使用一些数据库约束来创建节点或关系的一个或多个属性的规则。
Neo4j数据库也支持对NODE或Relationship的属性添加UNIQUE约束
UNIQUE约束的优点
- 避免重复记录。
- 强制执行数据完整性规则。
Neo4j CQL UNIQUE约束操作
- 创建UNIQUE约束
- 删除UNIQUE约束。
创建UNIQUE约束
Neo4j CQL已提供“CREATE CONSTRAINT”命令,以在NODE或关系的属性上创建唯一约束。
语法
CREATE CONSTRAINT ON (label_name)
ASSERT property_name IS UNIQUE
语法说明
CONSTRAINT约束、ASSERT 断言
| 语法元素 | 描述 |
|---|---|
| CREATE CONSTRAINT ON | 它是一个Neo4j CQL关键字。 |
| label_name | 它是节点或关系的标签名称。 |
| ASSERT | 它是一个Neo4j CQL关键字。 |
| property_name | 它是节点或关系的属性名称。 |
| IS UNIQUE | 它是一个Neo4j CQL关键字,通知Neo4j数据库服务器创建一个唯一约束。 |
注意:
上述语法描述了它的PROPERTY_NAME LABEL_NAME节点或关系创造了一个独特的约束。
示例-
演示如何在CreditCard节点的number属性上创建UNIQUE约束。
注: -在这里我们将检查两种情况。
- 如果数据库包含重复的CreidtCard节点。
- 如果数据库不包含重复的CreidtCard节点。
(场景 1)如果此CreidtCard包含重复的节点,如下所示。
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE
然后,如果我们尝试在number属性上创建UNIQUE约束,那么它会抛出错误,表示重复节点可用
消息提示无法在number属性上创建UNIQUE约束。
(场景 2)如果此CreidtCard不包含如下所示的重复节点。
CREATE CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE然后它成功地对number属性创建UNIQUE约束。
如果应用程序尝试插入重复的CreditCard号码,Neo4j DB服务器将会抛出一个错误,表示数据库中已存在相同的数字。
删除UNIQUE约束
Neo4j CQL提供了“DROP CONSTRAINT”命令,以从NODE或Relationship的属性中删除现有的Unique约束。
语法
DROP CONSTRAINT ON (label_name)
ASSERT property_name IS UNIQUE
语法说明
| 语法元素 | 描述 |
|---|---|
| DROP CONSTRAINT ON | 它是一个Neo4j CQL关键字。 |
| label_name | 它是节点或关系的标签名称。 |
| ASSERT | 它是一个Neo4j CQL关键字。 |
| property_name | 它是节点或关系的属性名称。 |
| IS UNIQUE | 它是一个Neo4j CQL关键字,通知Neo4j数据库服务器创建一个唯一约束。 |
注意 -
上述语法描述它从节点或关系的label_name的property_name中删除唯一约束。
示例-
演示如何从CreditCard节点的number属性删除现有UNIQUE约束。
DROP CONSTRAINT ON (cc:CreditCard)
ASSERT cc.number IS UNIQUE
评论列表(0条)