我希望跨数据库结构更改持久保存表数据,因此基本流程如下:
步骤1 - 4按预期执行,但在调用onCreate()后重新填充时,我在def save(self, *args, **kwargs):
if self.pk is None:
combination = Availability.objects.filter(player=self.player,
hour=self.hour).first()
if combination:
self.pk = combination.pk
super(Availability, self).save(*args, **kwargs)
上得到唯一约束异常。
在onUpgrade中,我有以下结构:
primary_table._id
我不明白为什么仅为重新填充主表而抛出异常,而不是在填充临时表时抛出异常。
答案 0 :(得分:1)
db.execSQL("create table CustomerTemp as select * from Customer;");
此命令创建CustomerTemp
表,并将所有行复制到其中。
db.execSQL("insert into CustomerTemp select * from Customer;");
此命令再次复制所有行。 CREATE TABLE AS语句不会重新创建任何约束(例如PRIMARY KEY或UNIQUE),因此重复项不会导致错误。