MySQL的更新集值为一列,为两列的总和

时间:2015-05-05 07:09:36

标签: mysql

我正在开发一个pos应用程序,我认为我可以通过让mysql服务器为我做一些工作来减少程序中的代码量并防止错误。我想要的是MySQL根据添加到表中的其他值来计算一列的值。

我的MySQL表格如下:

| id | tax_group |金额|平衡|日期|

根据我的理解,您可以向表中添加触发器,当添加新的金额值时,它会自动计算余额(即余额+ =金额)。这也会阻止用户操纵税收。但是,我不知道该怎么做。我看过MySQL文档,但没有帮助。

如果你能帮助我,我会非常感激。

3 个答案:

答案 0 :(得分:0)

这可以帮助你,但我认为数学部分并不是你想要的,但你可以修改它!

create trigger insert_amount 
before insert on my_table for each row
  set NEW.balance  = NEW.balance + NEW.amount;


create trigger update_amount 
before update on my_table for each row
  set NEW.balance  = NEW.balance + NEW.amount;

答案 1 :(得分:0)

您需要有2个触发器来完成此操作。 第一个是在添加新记录时添加新记录而第二个是在更新记录时。触发器可以是

delimiter //

create trigger before_ins_cal_balance before insert on your_table_name
for each row
begin
 set new.balance = new.amount ;
end;//

delimiter ;



delimiter //

create trigger before_upd_cal_balance before update on your_table_name
for each row
begin
 if new.amount <> old.amount then
    set new.balance = old.balance+new.amount ;
 end if;
end;//

delimiter ;

此处第一个将设置与余额相同的值,更新时的第二个将新余额设置为上一个余额+旧金额。请注意,如果仅更改金额,将在第二种情况下更新余额金额,否则它将具有先前值

答案 2 :(得分:0)

我认为你不需要触发器。当您更新金额时,您可以将余额设置为旧余额+ new_amount

update tax_sales set amount=20, balance=balance+amount where id=1;