¿Cómo puedo hacer que una columna en una base de datos MySQL sea una función de otras columnas?

StackOverflow https://stackoverflow.com/questions/1225197

  •  22-07-2019
  •  | 
  •  

Pregunta

Estoy trabajando con una base de datos que realiza un seguimiento de dónde está un lector en un libro. Lo hago teniendo una columna de recuento de páginas y una columna de página actual.

¿Hay alguna forma de agregar una columna de 'progreso' que sea igual a (currentpage / pagecount)?

¿Fue útil?

Solución

Tienes dos opciones. Puede crear ese campo en SELECT :

SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books;

O cree un VIEW , que le permitirá consultarlo sin indicar explícitamente la operación:

CREATE VIEW user_books_progress AS
  (SELECT book_id, user_id, (currentpage/pagecount) AS progress FROM user_books);

Entonces puede consultar su vista como una tabla normal:

SELECT book_id, user_id, progress FROM user_books_progress;

Más información sobre operadores y vistas aritméticas está disponible en la documentación:

  

11.5.1: Operadores aritméticos < br>    12.1.12. CREAR VER Sintaxis

Otros consejos

No puede definir una columna para que sea una función. Hay al menos dos soluciones para esto:

  • Actualice su columna de progreso usando un disparador ANTES DE ACTUALIZAR, también necesitará uno para ANTES DE INSERTAR.
  • Use una vista que calcule la columna de progreso por usted.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top