Er zijn 2,5 manieren om dit te doen (eigenlijk twee, maar het voelt alsof er drie zijn):
Van gemakkelijk tot moeilijk...
Optie 1:
Als je tabelA nodig hebt om de waarde van tabelB weer te geven, sla de waarde dan helemaal niet op in tabelA, maar gebruik gewoon de waarde van tabelB. Gebruik ofwel een join:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
of een subselectie
select *, (select col1 from tableB where <some condition>) col1
from tableA
Optie 2:
Als u tevreden bent met optie 1, converteert u deze naar een weergave die zich als een tabel gedraagt (behalve beperkingen voor het bijwerken van weergaven die joins zijn):
create view myview as
select ... (one of the above selects)
Optie 3:
Maak een database-trigger die wordt geactiveerd wanneer de waarde van tableB wordt gewijzigd en kopieer de waarde naar de juiste rij/kolom in tableA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Merk op dat new
en old
zijn speciale namen die aan de nieuwe en oude rijen worden gegeven, zodat u kunt verwijzen naar de waarden in de tabel die wordt bijgewerkt.
Kies de optie die het beste bij uw behoeften past.