如何在 tarantool 中进行 UPDATE ... SET MAX(第 5 列)

How to make UPDATE ... SET MAX (column, 5) in tarantool

实际上,有一个任务-从以下字段收集使用情况统计信息:cntvaluemaxmin

我想一气呵成 运行 upsertcnt 通过 + 设置,value 通过 =

我不明白如何制作最小字段:

  1. 是否有一个简单的选项来为 upsert 创建您自己的函数(lua,它将获取旧值和新值并输出结果)
  2. 或者我可以创建一个函数来获取整个元组、新数据,并自行更新相应的值。

只需将 before_replace 触发器设为 space,如果旧值缺失,则 returns 为新值,否则 returns 为修改后的值。大概是这样的:

function trigger_before_update_space1 (old, new)
    return old and box.tuple.new({
        new[1],
        new[2],
        math.max(old[3], new[2])
    }) or new
end