how to populate mysql column value based on a formula?

前端 未结 2 1550
礼貌的吻别
礼貌的吻别 2021-01-06 15:01

I have created a mysql table with the following columns...

item_price, discount, delivery_charge, grand_total

The value of item_price

相关标签:
2条回答
  • 2021-01-06 15:12

    I think you'd have to use a BEFORE INSERT trigger for that:

    http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html

    Something like this (untested off the top of my header code):

    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;
    
    0 讨论(0)
  • 2021-01-06 15:13

    Here's an example of a trigger that will work. Note that you'll need both update and insert triggers due to your "ad hoc update" requirements.

    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 ;
    

    But wouldn't a view be simpler and better?

    create view my_table_view as
    select item_price, discount, delivery_charge, 
    item_price - discount + delivery_charge as grand_total
    from my_table;
    

    then just select from the view instead of the table

    0 讨论(0)
提交回复
热议问题