我已经创建了一个包含以下列的mysql表…
item_price, discount, delivery_charge, grand_total
item_price
、discount
和delivery_charge
的值都随所考虑的项目而变化,这些值将手动填写到表中。我想让mysql根据
grand_total
、item_price
和discount
的值填充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;
然后从视图而不是表中选择