Как я могу сделать так, чтобы столбец в базе данных MySQL был функцией других столбцов?

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Я работаю с базой данных, которая отслеживает, где находится читатель в книге.Я делаю это, имея столбец количества страниц и столбец текущей страницы.

Есть ли способ добавить столбец "прогресс", который был бы равен (currentpage / pagecount)?

Это было полезно?

Решение

У вас есть два варианта. Вы можете создать это поле в SELECT :

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

Или создайте VIEW , который позволит вам запрашивать его без явного указания операции:

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

Тогда вы можете просто запросить свое представление как обычную таблицу:

SELECT book_id, user_id, progress FROM user_books_progress;

Дополнительную информацию об арифметических операторах и представлениях можно найти в документации:

  

11.5.1: арифметические операторы < ш>    12.1.12. Синтаксис CREATE VIEW

Другие советы

Вы не можете определить столбец как функцию.Для этого есть по крайней мере два обходных пути:

  • Обновите столбец прогресса, используя триггер BEFORE UPDATE, он также понадобится вам для BEFORE INSERT.
  • Используйте представление, которое вычисляет столбец прогресса для вас.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top