Der er 2,5 måder at gøre dette på (dybest set to, men det føles som om der er tre):
Fra nemmeste til sværeste...
Mulighed 1:
Hvis du har brug for tabelA til at afspejle tabelB's værdi, skal du slet ikke gemme værdien i tabelA, bare brug tabelB's værdi. Brug enten et join:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
eller et undervalg
select *, (select col1 from tableB where <some condition>) col1
from tableA
Mulighed 2:
Hvis du er tilfreds med mulighed 1, skal du konvertere den til en visning, der opfører sig som en tabel (bortset fra begrænsninger for opdatering af visninger, der er joinforbindelser):
create view myview as
select ... (one of the above selects)
Mulighed 3:
Opret en databasetrigger, der udløses, når tabelB's værdi ændres, og kopierer værdien til den relevante række/kolonne i tabelA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Bemærk, at new
og old
er specielle navne givet til de nye og gamle rækker, så du kan referere til værdierne i den tabel, der opdateres.
Vælg den mulighed, der passer bedst til dine behov.