我只想更新指定的列,当我执行update(table).replace(model)
它时,它会替换与主键对应的所有数据。如何只更新指定的列而不编写自定义查询。
问问题
2456 次
2 回答
3
你必须Insertable
像这样声明你的函数:
Future updateVisit(Insertable<Visit> visit) => update(visits).replace(visit);
所以,当你调用一个函数时,你可以这样做:
visitDao.updateVisit(visit.copyWith(completed: newValue))
或者
visitDao.updateVisit(VisitsCompanion(id: Value(visitId), checkOut: Value(DateTime.now())));
于 2020-01-31T11:40:22.490 回答
2
在文档中,我发现这可能会有所帮助,具体取决于您的用例。这就是您可以替换单个列的值的方式。
Future moveImportantTasksIntoCategory(Category target) {
// for updates, we use the "companion" version of a
generated class. This wraps the
// fields in a "Value" type which can be set to be absent using "Value.absent()". This
// allows us to separate between "SET category = NULL"
(`category: Value(null)`) and not
// updating the category at all: `category: Value.absent()`.
return (update(todos)
..where((t) => t.title.like('%Important%'))
).write(TodosCompanion(
category: Value(target.id),
),
);
}
于 2021-07-20T22:35:38.120 回答