mySQL触发器未触发

mySQL触发器未触发,mysql,sql,Mysql,Sql,我有一个4列的表[year,v_num,t_num,percentage],我试图用v_num/t_num*100填充percentage。数据已在表中,但百分比列为空。我创建了一个后插入触发器来填充列,但它不起作用。有人有什么建议吗 触发 DELIMITER | CREATE DEFINER = 'XXX' TRIGGER percentAfterUp AFTER INSERT ON `table` FOR EACH ROW BEGIN UPDATE `table` SET perc

我有一个4列的表[year,v_num,t_num,percentage],我试图用v_num/t_num*100填充percentage。数据已在表中,但百分比列为空。我创建了一个后插入触发器来填充列,但它不起作用。有人有什么建议吗

触发

 DELIMITER |

CREATE DEFINER = 'XXX' TRIGGER percentAfterUp
AFTER INSERT
ON `table`
FOR EACH ROW
 BEGIN 

UPDATE `table` SET percentage = v_num/t_num*100;


END|

DELIMITER ;

如果要在行中设置值,请使用插入前触发器,而不是插入后触发器:

DELIMITER |

CREATE DEFINER = 'XXX' TRIGGER percentAfterUp
BEFORE INSERT ON `table` FOR EACH ROW
BEGIN 
    SET new.percentage = (new.v_num / new.t_num) * 100;
END|

DELIMITER ;
如果确实要更新所有行,请不要使用触发器,只使用
update
语句:

UPDATE `table`
    SET percentage = (v_num/t_num)*100;

如果要在行中设置值,请使用插入前触发器,而不是插入后触发器:

DELIMITER |

CREATE DEFINER = 'XXX' TRIGGER percentAfterUp
BEFORE INSERT ON `table` FOR EACH ROW
BEGIN 
    SET new.percentage = (new.v_num / new.t_num) * 100;
END|

DELIMITER ;
如果确实要更新所有行,请不要使用触发器,只使用
update
语句:

UPDATE `table`
    SET percentage = (v_num/t_num)*100;

什么都没有发生必须在需要时计算值,而不是在数据库中添加重复数据。什么都没有发生必须在需要时计算值,而不是在数据库中添加重复数据。尝试了该操作后,无效。如果其他列中的数据已填充,则不必在插入后使用。如果没有,什么时候会有人使用AFTER INSERT?@ybce。您可以在插入后使用
将记录放入存档表中。这样,就不会有两个交易同时发生。那么,答案怎么不起作用呢?请注意,这是一个
插入
触发器,而不是
更新
触发器,因此它仅在插入新数据时生效。我知道我可以使用它,但我希望它能够自动执行,因为我稍后会向表中添加更多数据。尝试了该操作,但无效。如果其他列中的数据已填充,则不必在插入后使用。如果没有,什么时候会有人使用AFTER INSERT?@ybce。您可以在插入后使用
将记录放入存档表中。这样,就不会有两个交易同时发生。那么,答案怎么不起作用呢?请注意,这是一个
insert
触发器,而不是
update
触发器,因此它仅在插入新数据时生效。我知道我可以使用它,但我希望它能够自动执行,因为我稍后会向表中添加更多数据。