Gremlin:如果发生异常,请回滚查询

Gremlin:如果发生异常,请回滚查询,gremlin,amazon-neptune,Gremlin,Amazon Neptune,我正在尝试提交一个类似批处理的操作,用于在同一查询中创建多个顶点和边 g.addV('os').property('name', 'linux').as('linux'). addV('os').property('name', 'windows').as('windows'). addV('os').property('name', 'mac').as('mac'). addE('competitor').from('linux').to('UNEXISTING OS').

我正在尝试提交一个类似批处理的操作,用于在同一查询中创建多个顶点和边

g.addV('os').property('name', 'linux').as('linux').
  addV('os').property('name', 'windows').as('windows').
  addV('os').property('name', 'mac').as('mac').
  addE('competitor').from('linux').to('UNEXISTING OS').      # fail here
  addE('competitor').from('linux').to('windows').
  addE('competitor').from('windows').to('mac').
  addE('competitor').from('linux').to('mac').
  iterate()
查询被构造为故意失败,但是正在创建失败线之前的所有顶点。
是否可以为整个查询实现一种事务?因此,如果一个子查询失败,它应该回滚以前执行的子查询


谢谢

无法使用TinkerGraph在Gremlin控制台中执行查询, 根据TinkerPop的说法,内置TinkerGraph对象不支持事务

但是,正如cygri所指出的,AWS Neptune提供了对事务()的支持,这些事务可以以OP的原始查询形式执行,也可以通过分号(;)或换行符(\n)分隔查询


你也可以使用;创建一个会话连接,它将在出现错误时回滚查询

它说:“海王星在每次小精灵穿越开始时打开一个新的事务,并在穿越成功完成后关闭该事务。当出现错误时,该事务会回滚。”所以我原以为它会撤消顶点创建。@cygri-hmm,你说得对。我认为海王星会考虑一个事务,它是通过<代码>分隔的;代码>。我试图在Gremlin控制台中执行查询,但从未尝试过Neptune数据库。似乎事务逻辑由提供者自己实现。非常感谢。我懂了。有趣。如果你有一分钟的时间,为什么不把这个发现作为你自己问题的答案发布出来,这样未来的访问者就可以很容易地找到它?
g.addV('os').property('name', 'linux').next();
g.addV('os').property('name', 'windows').next();
g.addE('competitor').from('1101').to('1102')