sql >> Database teknologi >  >> RDS >> Mysql

Er det muligt at referere til en mysql-tabelpostværdi fra en anden tabelpost dynamisk?

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.



  1. Indsættelse af flere rækker med sekvens i Oracle

  2. Basering af databasemodeller i virkeligheden:En bloggers udfordring

  3. Hvorfor bruger MySQL ikke et indeks til en større end sammenligning?

  4. Er primære nøgler og indekser i Hive-forespørgselssprog mulig eller ej?