Search code examples
orientdb

OrientDB: Is it possible to create a vertex together with an edge in one command?


I've got three classes:

  • Users extends V
  • Links extends V
  • Edges extends E

I have 3 Users, that won't usually change.

I have potentially 10000's of Links, and each one is connected to at least one of the Users (usually only one) via an Edge.

Is it possible to join these two commands, which are always called in succession, into one?

link = "insert into Links set title='Link 1'"
"create edge Edges
   from ( select from Users where user_id='"+user_id+"')
   to   ( select from " + link._rid + ")"

That is some kind of pseudocode, I'm checking this out with pyorient.


Solution

  • Take a look at SQL Batch.

    Your command(s) might look like the following...

    pyorient_client.batch("""begin
        let link = create vertex Links set name = 'Link 1'
        let user = select from Users where user_id = '{}' lock record
        let edge = create edge Edges from $user to $link
        commit
        return $edge""".format(user_id)
    )