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

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

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

Ответы [ 2 ]

8 голосов
/ 04 августа 2009

У вас есть два варианта. Вы можете создать это поле в 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 Синтаксис

1 голос
/ 04 августа 2009

Вы не можете определить столбец как функцию. Существует как минимум два обходных пути:

  • Обновите столбец прогресса с помощью триггера ПЕРЕД ОБНОВЛЕНИЕМ, он также потребуется для ПЕРЕД ВСТАВКОЙ.
  • Используйте представление, которое вычисляет столбец прогресса для вас.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...