Có 2,5 cách để làm điều này (về cơ bản là hai, nhưng có vẻ như có ba):
Từ dễ nhất đến khó nhất ...
Tùy chọn 1:
Nếu bạn cần tableA để phản ánh giá trị của tableB, hoàn toàn không lưu trữ giá trị trong tableA, chỉ sử dụng giá trị của tableB. Sử dụng kết hợp:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
hoặc một lựa chọn phụ
select *, (select col1 from tableB where <some condition>) col1
from tableA
Tùy chọn 2:
Nếu bạn hài lòng với tùy chọn 1, hãy chuyển đổi nó thành một dạng xem, hoạt động giống như một bảng (ngoại trừ các hạn chế về việc cập nhật các dạng xem được nối):
create view myview as
select ... (one of the above selects)
Tùy chọn 3:
Tạo trình kích hoạt cơ sở dữ liệu kích hoạt khi giá trị của tableB bị thay đổi và sao chép giá trị vào hàng / cột thích hợp trong bảngA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Lưu ý rằng new
và old
là những tên đặc biệt được đặt cho các hàng mới và cũ để bạn có thể tham chiếu các giá trị trong bảng đang được cập nhật.
Chọn tùy chọn phù hợp nhất với nhu cầu của bạn.