Ci sono 2,5 modi per farlo (fondamentalmente due, ma sembra che ce ne siano tre):
Dal più facile al più difficile...
Opzione 1:
Se hai bisogno della tabellaA per riflettere il valore della tabellaB, non memorizzare affatto il valore nella tabellaA, usa semplicemente il valore della tabellaB. Usa un join:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
o una sottoselezione
select *, (select col1 from tableB where <some condition>) col1
from tableA
Opzione 2:
Se sei soddisfatto dell'opzione 1, convertila in una vista che si comporta come una tabella (tranne per le restrizioni sull'aggiornamento delle viste che sono join):
create view myview as
select ... (one of the above selects)
Opzione 3:
Crea un trigger di database che si attiva quando il valore della tabellaB viene modificato e copia il valore nella riga/colonna appropriata nella tabellaA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Nota che new
e old
sono nomi speciali assegnati alle nuove e vecchie righe in modo da poter fare riferimento ai valori nella tabella in fase di aggiornamento.
Scegli l'opzione più adatta alle tue esigenze.