如何在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
相关产品推荐
相关产品推荐

