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

如何在Flutter的Drift中直接更新列值(无需先查后改)

在Drift中直接批量更新数据行的实现方法

你可以直接使用Drift的批量更新语法,无需先查询数据再逐条修改,通过一条SQL语句完成所有目标行的更新操作,效率更高。

替换你现有代码的写法如下:

await (update(playlistSongs)
      ..where((tbl) => tbl.order.isBetweenValues(low + 1, high))
      ..set((tbl) => tbl.order, const CustomExpression('order - 1')))
    .go();

代码说明:

  • update(playlistSongs) 指定要更新的目标表
  • where 保留你原有的筛选条件,精准匹配order值在low+1到high区间内的数据行
  • set 方法通过CustomExpression直接对order字段执行算术运算(order - 1),Drift会自动将其转换为对应的SQL更新逻辑
  • 最后调用.go()执行这条批量更新指令

这种方式仅需一次数据库交互,相比先查询再逐条更新的模式,能大幅减少IO开销,数据量越大优势越明显。

内容的提问来源于stack exchange,提问作者Mia loha.dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:55:22