删除图类型元素仅限 Cypher 25企业版Neo4j 2026.02 中引入
ALTER CURRENT GRAPH TYPE DROP 命令允许您从图类型中删除元素类型和约束。
从图类型中删除元素类型和约束需要 DROP CONSTRAINT 权限。 |
设置图类型 (Set graph type)
ALTER CURRENT GRAPH TYPE SET {
(p:Person => :Resident {name :: STRING, ssn :: INTEGER})
REQUIRE (p.name, p.ssn) IS KEY,
(:Pet => :Resident&Animal {insuranceNumber :: INTEGER IS KEY, healthCertificate :: STRING IS UNIQUE, name :: STRING}),
(:Robot => :Resident&Machine {application :: STRING NOT NULL, id :: INTEGER NOT NULL}),
(:City => {name :: STRING NOT NULL, population :: INTEGER}),
(:Resident)-[:LIVES_IN => {since :: ANY NOT NULL}]->(:City),
(:Company => {name :: STRING, address :: STRING IS UNIQUE}),
(:Person)-[:WORKS_FOR => {role :: STRING}]->(:Company),
CONSTRAINT company_name FOR (c:Company) REQUIRE c.name IS KEY,
CONSTRAINT animal_id FOR (a:Animal) REQUIRE a.id IS UNIQUE,
CONSTRAINT resident_address FOR (resident:Resident) REQUIRE resident.address :: STRING
}
删除节点和关系元素类型
删除节点和关系元素类型
ALTER CURRENT GRAPH TYPE DROP {
(:Pet => ),
()-[:LIVES_IN => ]->()
}
您也可以在删除元素类型时定义完整的元素类型。但是,不允许使用部分定义。
| 允许 — 仅限标识节点标签/关系类型 | 允许 — 完整定义 | 不允许 — 部分定义 |
|---|---|---|
|
|
|
以这种方式删除节点或关系元素类型可以移除以下约束:
-
节点标签存在约束
-
源节点和目标节点标签约束
-
针对节点或关系元素类型定义的属性类型和属性存在约束。
这些约束不能与它们所支持的节点或关系元素类型分开删除。
不允许 — 删除节点或关系元素类型中的从属约束
ALTER CURRENT GRAPH TYPE DROP {
CONSTRAINT constraint_22a8753a (1)
}
| 1 | constraint_22a8753a 是在 City 节点元素类型上定义的属性存在约束(约束名称由 SHOW CONSTRAINTS 命令返回)。 |
但是,删除节点或关系元素类型并不会移除针对该类型定义的任何属性唯一性或键约束。 相反,它会将它们作为非标识节点标签和关系类型的约束保留下来。 因此,必须使用其约束名称将它们单独删除。 有关更多信息,请参阅下方的删除标识和非标识标签及类型的约束。
如果节点元素类型的标识标签同时作为关系元素类型中的源/目标节点标签受到约束,则在不删除或先更改该关系元素类型的情况下,无法删除该节点元素类型。
不允许 — 删除其标识标签也是关系元素类型中源/目标节点标签的节点元素类型
ALTER CURRENT GRAPH TYPE DROP {
(:Person => )
}
错误消息
22NCE: data exception - node element type in use. The node element type identified by the label `Person` is referenced in the graph type element '()-[:`WORKS_FOR` =>]->()' and cannot be dropped.
删除标识和非标识节点标签及关系类型的约束
无论键和属性唯一性约束是定义在标识标签上还是非标识标签上,它们都只能通过在 ALTER CURRENT GRAPH TYPE DROP 命令中使用 CONSTRAINT name 语法来删除。定义在非标识节点标签和关系类型上的属性存在和属性类型约束也以这种方式删除。约束名称由 SHOW CONSTRAINTS 命令返回,或者是 SHOW CURRENT GRAPH TYPE 定义的一部分。
删除显式命名和自动命名的键及属性唯一性约束
ALTER CURRENT GRAPH TYPE DROP {
CONSTRAINT animal_id,
CONSTRAINT constraint_302a3693
}
|
|
这些约束也可以使用 DROP CONSTRAINT 命令从图类型中删除。
删除非标识节点标签上的属性类型约束
DROP CONSTRAINT resident_address