【问题标题】:how to populate mysql column value based on a formula?如何根据公式填充 mysql 列值?
【发布时间】:2011-06-03 05:26:05
【问题描述】:

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

item_price, discount, delivery_charge, grand_total

item_pricediscountdelivery_charge 的值都因所考虑的项目而异,这些值将手动填写到表格中。

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

grand_total = item_price - discount + delivery_charge

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

【问题讨论】:

    标签: mysql formula calculated-field


    【解决方案1】:

    下面是一个可以工作的触发器示例。请注意,由于您的“临时更新”要求,您将需要更新和插入触发器。

    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;
    

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

    【讨论】:

      【解决方案2】:

      我认为您必须为此使用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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        • 2023-02-05
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多