如何根据公式填充mysql列值?

时间:2011-06-03 05:26:06

标签: mysql formula calculated-field

我创建了一个包含以下列的mysql表...

item_price, discount, delivery_charge, grand_total

item_pricediscountdelivery_charge的值都会根据所考虑的项目而有所不同,这些内容将手动填入表格。

我希望mysql根据grand_totalitem_pricediscount的值,使用下面的公式填充delivery_charge列中的值。

grand_total = item_price - discount + delivery_charge

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

2 个答案:

答案 0 :(得分: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 :(得分: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;