我尝试在以下任意列project
和fund
进行更新后,计算我的表goal
中的百分比列。
这是我编写的查询:
CREATE TRIGGER percentcalc AFTER UPDATE ON project
FOR EACH ROW
SET percent = ( fund / goal ) *100
但我似乎遇到了错误:
#1193 - 未知系统变量'%'
答案 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)
有两个主要问题:
NEW
关键字来访问正在更新的行的列值NEW
触发器中更改AFTER
个变量的值。如果您尝试这样做,您将获得'在触发'错误后不允许更新新行。因此,您必须仅使用 BEFORE
事件作为触发器<强> 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 演示