cancel
Showing results for 
Search instead for 
Did you mean: 

Delete a realtionship if exists and create new one

I have a requirement to delete a relationship alone(not nodes) if exists and then create a new relationship with existing nodes. All two operations should occur in a single statement. Am able to delete and create at the same time, only when a relationship exists between the nodes else if there is no relationship exists statements are not executing after the delete call.

Am using apoc.do.case()

2 REPLIES 2

terryfranklin82
Graph Voyager

You probably don't need to use an apoc function for that, a simple MATCH should suffice:

MATCH (a)-[r:old_type_of_rel]->(b)
DELETE r
CREATE (a)-[:new_type_of_rel]->(b)

If the entire match statement doesn't pass (e.g both nodes and the relationship between them must exists) then neither the DELETE nor CREATE will execute.

sethia_arun
Node Link

If relationship may or may not exist then you can try this

OPTIONAL MATCH (a)-[r:old_type_of_rel]->(b)
DELETE r
CREATE (a)-[:new_type_of_rel]->(b)