Tôi đã vật lộn với điều này và tôi biết có những lựa chọn khác, nhưng tôi đã đi đến kết luận rằng mô hình an toàn nhất là:
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;
Nó an toàn vì bạn có một bản sao của destinationtrước khi bạn sửa đổi nó. Tôi nghi ngờ rằng các câu lệnh cập nhật với các phép nối không được đưa vào SQLite vì chúng mạnh mẽ nhưng hơi rủi ro.
Sử dụng mẫu trên, bạn sẽ có hai countrytrường. Bạn có thể tránh điều đó bằng cách nêu rõ ràng tất cả các cột bạn muốn truy xuất từ đó destination_oldvà có thể sử dụng coalesceđể truy xuất các giá trị từ destination_oldnếu countrytrường trong sourcelà rỗng. Ví dụ:
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;