Flutter Flatter moor在偏移后添加初始数据
迁移实体并添加列后,我想在表中为新添加的列插入已有记录的值。 我该怎么做 例如,在这个场景中,对于数据库中已经存在的记录,我希望dueDate列的值为DateTime(2019,1,1)Flutter Flatter moor在偏移后添加初始数据,flutter,flutter-moor,Flutter,Flutter Moor,迁移实体并添加列后,我想在表中为新添加的列插入已有记录的值。 我该怎么做 例如,在这个场景中,对于数据库中已经存在的记录,我希望dueDate列的值为DateTime(2019,1,1) class Todos extends Table { IntColumn get id => integer().autoIncrement()(); TextColumn get title => text().withLength(min: 6, max: 10)(); TextC
class Todos extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get title => text().withLength(min: 6, max: 10)();
TextColumn get content => text().named('body')();
IntColumn get category => integer().nullable()();
DateTimeColumn get dueDate => dateTime().nullable()(); // new, added column
}
我不知道此操作有任何帮助器方法,但您可以在Migrator对象中使用
issueCustomQuery()
方法
@override
MigrationStrategy get migration => MigrationStrategy(
onCreate: (Migrator m) async { ... }},
onUpgrade: (Migrator m, int from, int to) async {
...
final sql = "YOUR CUSTOM SQL"
await m.issueCustomQuery(sql);
...
},
);
如果这是第一个架构版本,您可以使用
onCreate
回调进行初始数据创建。我不知道此操作有任何帮助器方法,但您可以在Migrator对象中使用issueCustomQuery()
方法
@override
MigrationStrategy get migration => MigrationStrategy(
onCreate: (Migrator m) async { ... }},
onUpgrade: (Migrator m, int from, int to) async {
...
final sql = "YOUR CUSTOM SQL"
await m.issueCustomQuery(sql);
...
},
);
如果这是第一个架构版本,您可以使用
onCreate
回调进行初始数据创建。等待m.add列,然后()可以使用customStatement()
等待m.add列,然后()可以使用
customStatement()
onUpgrade: (Migrator m, int from, int to) async {
if (from == 1) {
await m.addColumn(todos, todos.dueDate).then((value) async {
var dateInTheFuture = (new DateTime.utc(2022, 12, 24).millisecondsSinceEpoch / 1000).round();
await customStatement(''' UPDATE todos SET dueDate = '$dateInTheFuture' ''');
});
}
}