sqlite 如何在Flutter中使用Drift增加或减少更新查询中的列

zaqlnxep  于 2022-12-23  发布在  SQLite
关注(0)|答案(2)|浏览(413)

我想直接更新相关行。我如何做到这一点,而不必选择项目和更新他们一个接一个漂移?我的当前代码:

final concernedSongs = await (select(playlistSongs)
            ..where((tbl) => tbl.order.isBetweenValues(low + 1, high)))
          .get(); // should just update and decrement the values without reiterating over them

      concernedSongs.forEach((song) {
        reOrder(song.id, song.order - 1);
      });
i5desfxk

i5desfxk1#

您可以使用自定义查询、参考文档
这个查询可以帮助你得到一些想法,

await db.customStatement("update 'songs' 
        set order = order-1 where order between ? and ?",
        [low+1,high]);
68de4m5k

68de4m5k2#

目前仅使用dart代码是不可能的。您应该考虑使用customStatement。类似于:

await db.customStatement(
  "UPDATE 'songs' SET order = order - 1 WHERE order > ? AND order < ?",
  [low + 1, high],
);

相关问题