Mysql TRIGGER ON UPDATE with Functions

时间:2011-10-24 02:08:33

标签: mysql function triggers match

我试图在我修改另一个表时创建一个更新表的触发器... 这是我的代码:

CREATE TRIGGER updpartido AFTER UPDATE ON partidos
ON EACH ROW
    BEGIN
        SET @vgls = SELECT vgoles(NEW.eqvis)
        SET @lgls = SELECT vgoles(NEW.eqloc)
        UPDATE equipos SET gf=@vgls WHERE id=NEW.eqvis
        UPDATE equipos SET gf=@lgls WHERE id=NEW.eqloc
    END

它必须做的是,当我更新匹配时,它必须自动运行此触发器并更新目标。

但它给了我一个错误。 我做错了什么?谢谢,祝你有愉快的一天......!

1 个答案:

答案 0 :(得分:2)

我注意到你的触发器中没有任何语句终结符,这会产生一些抱怨,例如,SET @lgls = SELECT vgoles(NEW.eqloc) UPDATE equipos SET gf=@vgls WHERE id=NEW.eqvis没有任何意义。因此,您需要在触发器中使用一些分号,但您还需要通过临时更改分隔符来使这些分号通过解析器。您还应该使用ON EACH ROW FOR EACH ROW

delimiter |
CREATE TRIGGER updpartido AFTER UPDATE ON partidos
FOR EACH ROW
    BEGIN
        SET @vgls = SELECT vgoles(NEW.eqvis);
        SET @lgls = SELECT vgoles(NEW.eqloc);
        UPDATE equipos SET gf=@vgls WHERE id=NEW.eqvis;
        UPDATE equipos SET gf=@lgls WHERE id=NEW.eqloc;
    END;
|
delimiter ;