Как я могу автоматически рассчитать столбец в таблице без использования представления - PullRequest
3 голосов
/ 26 марта 2009

Например, у меня есть следующая таблица:

CREATE TABLE `test` (
  `total_results` int(10) unsigned NOT NULL,
  `num_results_as_expected` unsigned int(10) NOT NULL,
) ;

Я бы хотел добавить еще один столбец в таблицу, не используя VIEW, чтобы добавить процент:

(num_results_as_expected/total_results)*100

Возможно ли это без использования VIEW?

  • Разъяснение. Я знаю, что это возможно, используя select statent, но я бы хотел добавить это в инструкцию CREATE TABLE, чтобы столбец был доступен любому, кто обращается к таблице.

  • Разъяснение 2: Является ли триггер правильным способом сделать это? По существу, в столбце будет храниться дублирующаяся информация.

Ответы [ 2 ]

4 голосов
/ 26 марта 2009

Создайте обычный столбец + добавьте триггер «перед вставкой», который обновит его значение вычисленным значением для каждой операции вставки. Ex.:

create trigger update_result before insert on test for each row
begin set new.result = (num_results_as_expected/total_results)*100;
2 голосов
/ 26 марта 2009
select (num_results_as_expected/total_results)*100 as percentage from test

Итак, чтобы получить все столбцы, включая новый:

select total results, num_results_as_expected, (num_results_as_expected/total_results)*100 as percentage from test

Это избавляет вас от необходимости хранить что-либо еще, дополнительный столбец волшебным образом появляется при получении данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...