Hay 2,5 formas de hacer esto (básicamente dos, pero parece que hay tres):
Del más fácil al más difícil...
Opción 1:
Si necesita que la tabla A refleje el valor de la tabla B, no almacene el valor en la tabla A, solo use el valor de la tabla B. Use una unión:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
o una subselección
select *, (select col1 from tableB where <some condition>) col1
from tableA
Opción 2:
Si está satisfecho con la opción 1, conviértala en una vista, que se comporta como una tabla (excepto que hay restricciones para actualizar las vistas que son uniones):
create view myview as
select ... (one of the above selects)
Opción 3:
Cree un activador de base de datos que se active cuando se cambie el valor de tableB y copie el valor en la fila/columna apropiada en tableA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Tenga en cuenta que new
y old
son nombres especiales dados a las filas nuevas y antiguas para que pueda hacer referencia a los valores en la tabla que se está actualizando.
Elige la opción que mejor se adapte a tus necesidades.