Vue d’ensemble
L'instruction DELETE
vous permet de supprimer des nodes et des edges. Ces nodes ou edges doivent d'abord être récupérés à l'aide de l'instruction MATCH
.
<delete statement> ::= [ "DETACH" | "NODETACH"] "DELETE" <delete item list>
<delete item list> ::= <delete item> [ { "," <delete item> }... ]
<delete item> ::= <value expression>
Un edge ne peut exister lorsque l'une de ses extrémités est retirée du graph. Par défaut, GQL ne permet pas de supprimer un node tant qu'il a encore des edges connectés à lui.
Cependant, vous pouvez utiliser explicitement le mot-clé DETACH
pour activer la suppression des nodes ainsi que leurs edges connectés. Par exemple, lorsque le node B
est supprimé, les edges 1
, 2
et 4
seront également supprimés.
Dans le cas de DELETE
ou NODETACH DELETE
, la suppression du node B
échouera, ce qui peut être utile comme mesure de sécurité pour éviter les suppressions involontaires.
Si ni DETACH
ni NODETACH
n'est spécifié, DEDETACH
est implicitement appliqué.
Graph Exemple
Chacun des exemples suivants commence avec ce graph :
Pour créer ce graph, exécutez la requête suivante sur un graph vide :
INSERT (rowlock:User {_id: "U01", name: "rowlock"}),
(brainy:User {_id: "U02", name: "Brainy"}),
(mochaeach:User {_id: "U03", name: "mochaeach"}),
(purplechalk:User {_id: "U04", name: "purplechalk"}),
(c:Club {_id: "C01"}),
(rowlock)-[:Follows]->(brainy),
(mochaeach)-[:Follows]->(brainy),
(brainy)-[:Joins]->(c)
Suppression de Nodes Isolés
Cette requête supprime le node isolé purplechalk
:
MATCH (n:User {name: 'purplechalk'})
DELETE n
Suppression de Nodes Non Isolés
Cette requête supprime le node rowlock
ainsi qu'un edge connecté à lui :
MATCH (n:User {name: 'rowlock'})
DETACH DELETE n
Cette requête échoue car le node rowlock
a un edge connecté à lui :
MATCH (n:User {name: 'rowlock'})
DELETE n
Suppression d'Edges
Cette requête supprime tous les edges étiquetés Follows
:
MATCH ()-[e:Follows]->()
DELETE e