我正在查看stackoverflow中有关orientdb中自动增量字段的另一个问题,其中一个答案是使用计数器字段创建我们自己的顶点。
但是,当我尝试执行以下代码(java api和控制台脚本批处理)时,它无效。
请注意,id返回正常(进行了一些调试尝试,仅返回id变量),并创建了顶点。
但是,顶点id 总是 null(除非我将其设置为显式,即)。
剧本:
script sql
LET id = UPDATE CCounter INCREMENT value=1 RETURN AFTER $current WHERE name='session'
LET csession = CREATE VERTEX CDate SET id=$id.result, meet_date='2015-01-01 15:23:00'
end
我尝试使用$ id和$ current,但似乎没有任何效果。 目前我正在以双交易模式进行;一个获取id,另一个创建顶点。我真的希望有更好的方法。
P.S。 我使用的是2.0-M2版本
答案 0 :(得分:0)
你应该执行
LET csession = CREATE VERTEX CDate SET id=$id.value, meet_date='2015-01-01 15:23:00'
请注意$ id.value代替$ id.result。
答案 1 :(得分:0)
正如对Lvca的评论所述,答案是:
(1)更改字段名称。 Id似乎是保留的(ish)。它可能仍然可以绕过它并使用一个名为“id'”的字段,但我并不想搞砸它。 (2)由于某种原因,结果是一个集合(显示为' [id]')。我花了一些时间来弄明白,但我只需要从中选择第一个值。 (3)此外,还有2个值'这里。其中一个字段($ current.value)和第二个字段(不知道它来自哪里)。
有效的最终解决方案:
script sql
LET id = UPDATE CCounter INCREMENT value = 1 RETURN AFTER $current.value WHERE name='session'
LET csession = CREATE VERTEX CDate SET data_id=$id[0].value, meet_date='2015-01-01 15:23:00'
end