我创建了一个mysql表,其中包含以下列。。。
item_price, discount, delivery_charge, grand_total
item_price
、discount
和delivery_charge
的值都会根据所考虑的项目而变化,这些值将手动填充到表中。
我想让mysql根据item_price
、discount
和delivery_charge
的值,使用以下公式填充grand_total
列中的值。。。
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;
然后只需从视图中选择,而不是从表
我认为您必须使用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;