Ada 2,5 cara untuk melakukan ini (pada dasarnya dua, tetapi rasanya seperti ada tiga):
Dari yang termudah hingga tersulit...
Opsi 1:
Jika Anda membutuhkan tableA untuk mencerminkan nilai tableB, jangan simpan nilai dalam tableA sama sekali, cukup gunakan nilai tableB. Gunakan salah satu bergabung:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
atau subpilihan
select *, (select col1 from tableB where <some condition>) col1
from tableA
Opsi 2:
Jika Anda senang dengan opsi 1, konversikan ke tampilan, yang berperilaku seperti tabel (kecuali pembatasan memperbarui tampilan yang digabungkan):
create view myview as
select ... (one of the above selects)
Opsi 3:
Buat pemicu basis data yang diaktifkan saat nilai tableB diubah dan salin nilainya ke baris/kolom yang sesuai di tableA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Perhatikan bahwa new
dan old
adalah nama khusus yang diberikan untuk baris baru dan lama sehingga Anda dapat mereferensikan nilai dalam tabel yang sedang diperbarui.
Pilih opsi yang paling sesuai dengan kebutuhan Anda.