Existem 2,5 maneiras de fazer isso (basicamente duas, mas parece que existem três):
Do mais fácil ao mais difícil...
Opção 1:
Se você precisar que a tabelaA reflita o valor da tabelaB, não armazene o valor na tabelaA, apenas use o valor da tabelaB. Use uma junção:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
ou uma subseleção
select *, (select col1 from tableB where <some condition>) col1
from tableA
Opção 2:
Se você estiver satisfeito com a opção 1, converta-a em uma visualização, que se comporta como uma tabela (exceto as restrições na atualização de visualizações que são junções):
create view myview as
select ... (one of the above selects)
Opção 3:
Crie um gatilho de banco de dados que seja acionado quando o valor da tabelaB for alterado e copie o valor para a linha/coluna apropriada na tabelaA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Observe que
new
e old
são nomes especiais dados às linhas novas e antigas para que você possa fazer referência aos valores na tabela que está sendo atualizada. Escolha a opção que melhor se adapta às suas necessidades.