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 destination
trướ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 country
trườ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_old
và có thể sử dụng coalesce
để truy xuất các giá trị từ destination_old
nếu country
trường trong source
là 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;