关于 YMatrix
部署数据库
使用数据库
管理集群
最佳实践
高级功能
高级查询
联邦查询
Grafana 监控
备份恢复
灾难恢复
图数据库
管理手册
性能调优
故障诊断
工具指南
系统配置参数
SQL 参考
DELETE 子句用于删除图元素——节点、关系或路径。
注意!
YMatrix AGE 中 DELETE 的限制:
- DELETE 后不能对同一变量执行 SET
MATCH(n) DELETE n SET n.lol = 'ftw' RETURN n -- ERROR: cannot SET property on deleted variable n- DELETE 后接 CREATE 引用同一变量会报错
MATCH (a)-[e:KNOWS]->(b) DELETE e CREATE (a)-[:KNOWS {reason: 'new'}]->(b) -- ERROR: AssignTransactionId() called by Segment Reader process
使用建议:将 DELETE 和后续写操作拆分为独立的 Cypher 语句执行。
不跟随其他子句的 DELETE 子句称为终端子句。当 Cypher 查询以终端子句结尾时,cypher 函数调用不会返回任何结果。但是,cypher 函数调用仍然需要列定义列表。当 cypher 以终端节点结尾时,在列定义列表中定义一个值即可:该变量不会返回任何数据。
要移除属性,请参阅 REMOVE。
你不能在不同时删除以该顶点为起点或终点的边的情况下删除该节点。要么显式删除这些边,要么使用 DETACH DELETE。
要删除顶点,使用 DELETE 子句。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v:Useless)
DELETE v
$$) as (v agtype);
这将删除没有边的顶点(标签为 Useless)。此查询不返回任何内容。
| v |
|---|
| (0 rows) |
运行 MATCH 子句将收集所有节点——使用 DETACH 选项先删除顶点的边,然后删除顶点本身。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (v:Useless)
DETACH DELETE v
$$) as (v agtype);
此查询不返回任何内容。
| v |
|---|
| (0 rows) |
要删除边,使用 MATCH 子句找到边,然后将变量添加到 DELETE 子句中。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'Andres'})-[r:KNOWS]->()
DELETE r
$$) as (v agtype);
此查询不返回任何内容。
| v |
|---|
| (0 rows) |
你可以使用 RETURN 子句返回已删除的顶点。
查询
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'A'})
DELETE n
RETURN n
$$) as (a agtype);
| v |
|---|
| {"id": 281474976710659, "label": "", "properties": {"name": "A"}}::vertex |
| (1 rows) |