Orientdb sql自动增量:id始终为null(sql批处理,更新增量,变量)

时间:2014-10-09 02:19:38

标签: sql variables batch-processing auto-increment orientdb

我正在查看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版本

2 个答案:

答案 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