MYSQL触发器来计算百分比

时间:2013-07-12 14:17:25

标签: mysql sql triggers

我尝试在以下任意列projectfund进行更新后,计算我的表goal中的百分比列。

这是我编写的查询:

  CREATE TRIGGER percentcalc AFTER UPDATE ON project 
  FOR EACH ROW 
    SET percent = ( fund / goal ) *100

但我似乎遇到了错误:

  

#1193 - 未知系统变量'%'

2 个答案:

答案 0 :(得分:1)

delimiter //
CREATE TRIGGER percentcalc AFTER UPDATE ON project 
FOR EACH ROW BEGIN
    SET NEW.percent = ( NEW.fund / NEW.goal ) * 100;
END
//
delimiter ;

答案 1 :(得分:1)

有两个主要问题:

  1. 您必须使用NEW关键字来访问正在更新的行的列值
  2. 您无法在NEW触发器中更改AFTER个变量的值。如果您尝试这样做,您将获得'在触发'错误后不允许更新新行。因此,您必须仅使用 BEFORE 事件作为触发器
  3.   

    <强> Trigger Syntax and Examples
      ...在触发器主体内, OLD和NEW关键字使您可以   访问受触发器影响的行中的列。 (OLD和NEW不是   区分大小写。)...

         

    ...在 BEFORE触发器中,您还可以更改其值   如果您具有UPDATE权限,则使用SET NEW.col_name = value 。   这意味着您可以使用触发器来修改要插入的值   进入新行或用于更新行。 (这样的SET语句没有   AFTER触发器中的效果因为行更改已经存在   发生。)...

    据说你的触发器看起来像

    CREATE TRIGGER percentcalc 
    BEFORE UPDATE ON project 
    FOR EACH ROW 
       SET NEW.percent = (NEW.fund / NEW.goal) * 100;
    

    这是 SQLFiddle 演示