Как я могу сделать так, чтобы столбец в базе данных MySQL был функцией других столбцов?
Вопрос
Я работаю с базой данных, которая отслеживает, где находится читатель в книге.Я делаю это, имея столбец количества страниц и столбец текущей страницы.
Есть ли способ добавить столбец "прогресс", который был бы равен (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.
- Используйте представление, которое вычисляет столбец прогресса для вас.