sql >> Base de Datos >  >> RDS >> Mysql

¿Es posible hacer referencia dinámicamente a un valor de entrada de tabla mysql desde una segunda entrada de tabla?

Hay 2,5 formas de hacer esto (básicamente dos, pero parece que hay tres):

Del más fácil al más difícil...

Opción 1:

Si necesita que la tabla A refleje el valor de la tabla B, no almacene el valor en la tabla A, solo use el valor de la tabla B. Use una unión:

select a.*, b.col1
from tableA a
join tableB b on <some join condition>

o una subselección

select *, (select col1 from tableB where <some condition>) col1
from tableA

Opción 2:

Si está satisfecho con la opción 1, conviértala en una vista, que se comporta como una tabla (excepto que hay restricciones para actualizar las vistas que son uniones):

create view myview as 
select ... (one of the above selects)

Opción 3:

Cree un activador de base de datos que se active cuando se cambie el valor de tableB y copie el valor en la fila/columna apropiada en tableA

create trigger tableB_update
after update on tableB
for each row
update tableA set
tablea_col = new.col1
where id = new.tableA_id;

Tenga en cuenta que new y old son nombres especiales dados a las filas nuevas y antiguas para que pueda hacer referencia a los valores en la tabla que se está actualizando.

Elige la opción que mejor se adapte a tus necesidades.