我已经创建了一个包含以下列的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来完成,但如果可能的话,我更喜欢数据库自动完成这项工作。

最佳答案

下面是一个触发器的例子。请注意,由于您的“特别更新”要求,您需要更新和插入触发器。

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;

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

07-24 09:52
查看更多