2011-06-03 48 views
3

我创建了一个MySQL表有以下的列...如何根据公式填充mysql列值?

item_price, discount, delivery_charge, grand_total 

item_price值,discountdelivery_charge完全取决于所考虑的项目有所不同,而这些将被手工填写到表格。

我想有mysql填充的基础上item_pricediscountdelivery_charge,使用下面的公式的值在grand_total列中的值...

grand_total = item_price - discount + delivery_charge 

我可以以某种方式指定一个公式此列同时在mysql中创建表结构?我知道这可以使用PHP完成,但我更喜欢数据库自动执行此操作,如果可能的话。

回答

7

这是一个可以工作的触发器的例子。请注意,由于您的“临时更新”要求,您将需要更新和插入触发器。

delimiter ~ 

create trigger my_table_update before update on my_table 
for each row begin 
    set new.grand_total = new.item_price - new.discount + new.delivery_charge; 
end~ 

create trigger my_table_insert before insert on my_table 
for each row begin 
    set new.grand_total = new.item_price - new.discount + new.delivery_charge; 
end~ 

delimiter ; 

但不会更简单,更好吗?

create view my_table_view as 
select item_price, discount, delivery_charge, 
item_price - discount + delivery_charge as grand_total 
from my_table; 

然后只从视图,而不是表中选择

1

我认为你必须使用一个BEFORE INSERT触发:

http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html

是这样的(未经测试过的我的头代码的顶部):

CREATE TRIGGER blahblah BEFORE INSERT ON your_table 
FOR EACH ROW BEGIN 
    set new.grand_total = new.item_price - new.discount + new.delivery_charge; 
END;