如何在不使用视图的情况下自动计算表中的列

时间:2009-03-26 09:19:06

标签: mysql

例如,我有下表:

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 个答案:

答案 0 :(得分:4)

创建常规列+添加“插入前”触发器,该触发器将在每次插入操作时使用计算值更新其值。例:

create trigger update_result before insert on test for each row
begin set new.result = (num_results_as_expected/total_results)*100;

答案 1 :(得分:2)

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

这可以防止您必须存储额外的内容,在获取数据时神奇地显示额外的列。