2015-04-28 61 views
-2

我在使用SQL中的触发器方面很新,并且似乎找不到有关该主题的任何教程,这些教程有点像我的愿望一样。在单列上更新后的表触发器

我有如下表:

id int(11) AI PK 
user_id int(11) 
academy_id int(11) 
module_id int(11) 
module_type_id int(11) 
team_id int(11) 
score int(11) 
medal_id int(11) PK 
timestamp datetime 
possible_correct int(11) 
user_correct int(11) 

现在我的目标是要在这个表上创建一个AFTER UPDATE触发,这样当更新完成score列重新计算如下(possible_correct/user_correct

有谁知道我可以做到这一点?

回答

1

您不能更新使用触发after update同桌,你需要将它before update和设置的值作为东西

delimiter // 
create trigger `your_trigger_name` before update on `your_table_name` 
for each row 
begin 
if new.possible_correct > 0 and new.user_correct > 0 then 
    set new.score = new.possible_correct/new.user_correct ; 
end if ; 
end;// 

delimiter ; 
+0

,我很典型的更新值是值的一个是内计算那么这项工作呢? –

+0

是的,只要这两个值都大于'0',它就会工作。如果您为user_correct设置了0,则添加了条件以避免由0问题整除 –