Ich habe damit gerungen und weiß, dass es andere Möglichkeiten gibt, aber ich bin zu dem Schluss gekommen, dass das sicherste Muster ist:
create table destination_old as select * from destination;
drop table destination;
create table destination as select
d.*, s.country
from destination_old d left join source s
on d.id=s.id;
Es ist sicher, weil Sie eine Kopie davon haben, destination
bevor Sie sie geändert haben. Ich vermute, dass Update-Anweisungen mit Joins nicht in SQLite enthalten waren, da sie leistungsstark, aber etwas riskant sind.
Wenn Sie das obige Muster verwenden, erhalten Sie zwei country
Felder. Sie können dies vermeiden, indem Sie explizit alle Spalten angeben, aus denen Sie abrufen möchten, destination_old
und möglicherweise verwenden coalesce
, um die Werte abzurufen, destination_old
wenn das country
Feld in source
null ist. Also zum Beispiel:
create table destination as select
d.field1, d.field2,...,coalesce(s.country,d.country) country
from destination_old d left join source s
on d.id=s.id;