更新后的MYSql触发器不更新表

时间:2014-11-11 10:52:33

标签: mysql

我有以下触发器:

CREATE DEFINER = CURRENT_USER 
TRIGGER `radia`.`orderstable_AFTER_UPDATE` 
  UPDATE ON `orderstable`
  FOR EACH ROW begin 
      SET @VATCharged = Amount * (VAT*0.01); 

但是,在金额或增值税发生变化后,VATCharged列不会更新。

该表格包含以下内容;订单号(INT),AccNo(VARCHAR),发票号(VARCHAR),描述(VARCHAR),金额(INT),增值税(INT)和VATCharged(INT)。

这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

您需要针对列指定oldnew以获取更新前的旧值或更新后的新值

set  @VATCharged := new.Amount * (new.VAT*0.01);

编辑: 如果您想更新表中的VATCharged列,那么触发器需要在更新之前进行

delimiter //
create trigger `radia`.`orderstable_AFTER_UPDATE` 
before update on `orderstable`
for each row
begin
  set new.VATCharged = new.Amount * (new.VAT*0.01);
end ; //
delimiter ;