3

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

item_price, discount, delivery_charge, grand_total

item_pricediscount和all的值delivery_charge取决于所考虑的项目,这些将手动填写到表中。

我想让 mysql使用下面的公式根据、和grand_total的值填充列中的值...item_pricediscountdelivery_charge

grand_total = item_price - discount + delivery_charge

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

4

2 回答 2

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;

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

于 2011-06-03T05:41:00.707 回答
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;
于 2011-06-03T05:32:31.587 回答