Il y a 2,5 façons de procéder (en gros deux, mais on dirait qu'il y en a trois) :
Du plus simple au plus difficile...
Option 1 :
Si vous avez besoin que tableA reflète la valeur de tableB, ne stockez pas du tout la valeur dans tableA, utilisez simplement la valeur de tableB. Utilisez soit une jointure :
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
ou une sous-sélection
select *, (select col1 from tableB where <some condition>) col1
from tableA
Option 2 :
Si vous êtes satisfait de l'option 1, convertissez-la en une vue, qui se comporte comme une table (à l'exception des restrictions sur la mise à jour des vues qui sont des jointures) :
create view myview as
select ... (one of the above selects)
Option 3 :
Créez un déclencheur de base de données qui se déclenche lorsque la valeur de tableB est modifiée et copie la valeur dans la ligne/colonne appropriée de tableA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Notez que new
et old
sont des noms spéciaux donnés aux nouvelles et anciennes lignes afin que vous puissiez référencer les valeurs dans la table en cours de mise à jour.
Choisissez l'option qui correspond le mieux à vos besoins.