Creates a new edge in the database.
Syntax
CREATE EDGE <type> [BUCKET <bucket>] [UPSERT] FROM <rid>|(<query>)|[<rid>]* TO <rid>|(<query>)|[<rid>]*
[UNIDIRECTIONAL]
[IF NOT EXISTS]
[SET <field> = <expression>[,]*]|CONTENT {<JSON>}
[RETRY <retry> [WAIT <pauseBetweenRetriesInMs]] [BATCH <batch-size>]
-
<type>
defines the type name for the edge. -
<bucket>
defines the bucket in which you want to store the edge. -
UNIDIRECTIONAL
creates a unidirectional edge; by default edges are bidirectional. -
IF NOT EXISTS
skips the creation of the edge in another edge already exists with the same direction (same from/to) and same edge type. -
UPSERT
allows to skip the creation of edges that already exist between two vertices (ie. a unique edge for a couple of vertices). This works only if the edge type has a UNIQUE index onout, in
fields, otherwise the statement fails. -
JSON
provides JSON content to set as the record. Use this instead of entering data field by field. -
RETRY
define the number of retries to attempt in the event of conflict, (optimistic approach). -
WAIT
defines the time to delay between retries in milliseconds. -
BATCH
defines whether it breaks the command down into smaller blocks and the size of the batches. This helps to avoid memory issues when the number of vertices is too high. By default, it is set to100
.
Edges and Vertices form the main components of a Graph database. ArcadeDB supports polymorphism on edges.
When no edges are created ArcadeDB throws a OCommandExecutionException
error. This makes it easier to integrate edge creation in transactions. In such cases, if the source or target vertices don’t exist, it rolls back the transaction.
Examples
-
Create a new edge type and an edge of the new type:
ArcadeDB> CREATE EDGE TYPE E1 ArcadeDB> CREATE EDGE E1 FROM #10:3 TO #11:4
-
Create an edge in a specific bucket:
ArcadeDB> CREATE EDGE E1 BUCKET EuropeEdges FROM #10:3 TO #11:4
-
Create an edge and define its properties:
ArcadeDB> CREATE EDGE FROM #10:3 TO #11:4 SET brand = 'fiat'
-
Create an edge of the type
E1
and define its properties:
ArcadeDB> CREATE EDGE E1 FROM #10:3 TO #11:4 SET brand = 'fiat', name = 'wow'
-
Create edges of the type
Watched
between all action movies in the database and the user Luca, using sub-queries:
ArcadeDB> CREATE EDGE Watched FROM (SELECT FROM account WHERE name = 'Luca') TO (SELECT FROM movies WHERE type.name = 'action')
-
Create an edge using JSON content:
ArcadeDB> CREATE EDGE E FROM #22:33 TO #22:55 CONTENT { "name": "Jay", "surname": "Miner" }
-
Create an edge only if not previously created:
ArcadeDB> CREATE INDEX Watched_out_in ON Watched (`@out`, `@in`) UNIQUE ArcadeDB> CREATE EDGE Watched FROM (SELECT FROM account WHERE name = 'Luca') TO (SELECT FROM movies WHERE type.name = 'action') IF NOT EXISTS
For more information, see: