Има 2,5 начина да направите това (по принцип два, но изглежда, че има три):
От най-лесното към най-трудното...
Вариант 1:
Ако имате нужда от tableA, за да отразява стойността на tableB, изобщо не съхранявайте стойността в tableA, просто използвайте стойността на tableB. Използвайте или съединение:
select a.*, b.col1
from tableA a
join tableB b on <some join condition>
или подизбор
select *, (select col1 from tableB where <some condition>) col1
from tableA
Вариант 2:
Ако сте доволни от опция 1, преобразувайте я в изглед, който се държи като таблица (с изключение на ограниченията за актуализиране на изгледи, които са обединения):
create view myview as
select ... (one of the above selects)
Вариант 3:
Създайте тригер на база данни, който се задейства, когато стойността на tableB се промени и копира стойността в съответния ред/колона в tableA
create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;
Имайте предвид, че new
и old
са специални имена, дадени на новите и старите редове, за да можете да препращате към стойностите в таблицата, която се актуализира.
Изберете опцията, която най-добре отговаря на вашите нужди.