You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter的Drift/Moor中使用Companion递增列值

Drift(Moor) 实现列值递增的API写法

要在Drift API中实现基于列当前值的递增,不能直接传入固定值,得用表达式来描述更新逻辑,正确代码如下:

await (_db.update(_db.items)
      ..where((e) => e.sequence.isBiggerOrEqualValue(insertAtSequence)))
    .write(
      ItemsCompanion(
        sequence: Value(Items.sequence + Constant(1)),
      ),
    );

核心要点:

  • Items.sequence是你定义的表列对象,直接引用它就代表该列的当前数据库值
  • + Constant(1)表示在当前值基础上加1,Drift会自动将这个表达式编译为SQL中的sequence = sequence + 1
  • 必须用Value()包裹整个表达式,因为ItemsCompanion的字段要求为Value<T>类型,这样Drift才会识别这是动态的列值更新,而非传入一个固定数值

这种写法完全符合Drift的API规范,同时能保证你的数据流(streams)正常触发更新,不需要依赖自定义SQL语句。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:44:55