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

¿Subconsulta como columna generada en mysql?

https://dev.mysql.com /doc/refman/5.7/es/create-table-generated-columns.html

Es razonable que la expresión de una columna generada pueda hacer referencia a solo columnas dentro de la misma fila. La columna generada no puede usar subconsultas ni hacer referencia a otras tablas o funciones con salida no determinista.

Supongamos que las columnas generadas admiten referencias entre tablas. Considere particularmente el caso de STORED columnas generadas.

Si actualiza una tabla, MySQL también tendría que actualizar las referencias en las columnas generadas en otra parte de la base de datos, si hacen referencia a la fila que actualizó. Sería complejo y costoso para MySQL rastrear todas esas referencias.

Luego considere agregar referencias indirectas a través de funciones almacenadas.

Luego considere que su actualización es a una tabla InnoDB en una transacción, pero la columna generada puede estar en una tabla que no es de transacción (MyISAM, MEMORY, ARCHIVE, etc.). ¿Debería reflejarse su actualización en esas columnas generadas cuando la realice? ¿Qué pasa si retrocedes? ¿Debe reflejarse su actualización en el momento de la confirmación? Entonces, ¿cómo debería MySQL "poner en cola" los cambios para aplicarlos a esas tablas? ¿Qué pasa si varias transacciones confirman actualizaciones que afectan la referencia de la columna generada? ¿Cuál debería ganar, el último que aplicó el cambio o el último que se comprometió?

Por estas razones, no es práctico ni eficiente permitir que las columnas generadas hagan referencia a otra cosa que no sean las columnas de la misma fila en la misma tabla.