我正在开发一个pos应用程序,我认为我可以通过让mysql服务器为我做一些工作来减少程序中的代码量并防止错误。我想要的是MySQL根据添加到表中的其他值来计算一列的值。
我的MySQL表格如下:
根据我的理解,您可以向表中添加触发器,当添加新的金额值时,它会自动计算余额(即余额+ =金额)。这也会阻止用户操纵税收。但是,我不知道该怎么做。我看过MySQL文档,但没有帮助。
如果你能帮助我,我会非常感激。
答案 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;