查看: 2193|回复: 5
|
MySQL自动计算数值的field
[复制链接]
|
|
想请教一下一个很菜鸟的问题:
我的数据库里有以下的fields:user_income_1, user_income_2 以及 user_total_income. user_total_income 的数值永远是 user_income_1 + user_income_2.
想请问一下,是否有法子让user_total_income的数值自动的计算出来,嗯,也就是说当用户输入任何一个income的数值,total_income会自动计算出两者的总和,并储存起来。也就是有点类似Excel里面的SUM(Cell1:Cell2)那样子,只是我想要的是让MySQL自动计算出这个数值并存入在user_total_income里面,这个可以做得到吗? |
|
|
|
|
|
|
|
发表于 1-12-2009 03:25 PM
|
显示全部楼层
你需要用到store procedure & trigger |
|
|
|
|
|
|
|
楼主 |
发表于 1-12-2009 03:33 PM
|
显示全部楼层
谢谢你的回答。看来还是得用StoredProc。。。只好继续读MySQL的Documentation了。 |
|
|
|
|
|
|
|
发表于 1-12-2009 05:14 PM
|
显示全部楼层
这样?
UPDATE table SET user_total_income = user_income_1 + user_income_2
或者...
SELECT user_income_1,user_income_2, user_income_1 + user_income_2 as user_total_income FROM table
这样就不需要 user_total_income 这个field...而且每一次拿出来的结果一定是user_income_1 + user_income_2
[ 本帖最后由 megablue 于 1-12-2009 05:21 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 1-12-2009 05:29 PM
|
显示全部楼层
我并不是直接使用MySQL Console的,而是使用C++ Builder + MyDAC。而那个user_income的部分是relational sub-table,Update 的部分并不是由我自行控制,而是由Master Table 做主(整个Application里面有大约20个Tables,关系错综复杂,如果每一个Table都附上一个DBNavigator的话,界面会惨不忍睹。。。)。我记得以前用BDE的时候有一个Aggrevated Field(可能会拼错字,见谅),可以设定一个expression来自动计算数值的,可是在MySQL里面没有相对应的Field Type,所以困惑不已。
不过现在问题已经解决了,用回老方法,在Table Event里面直接在BeforeUpdate Event里面做运算。 |
|
|
|
|
|
|
|
发表于 14-12-2009 04:58 PM
|
显示全部楼层
|
|
|
|
|
|
| |
本周最热论坛帖子
|