2011-10-24 64 views
1

我嘗試做一個更新,當我修改其它表的表的觸發器... 這裏是我的代碼:mysql的觸發更新功能

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 [email protected] WHERE id=NEW.eqvis 
     UPDATE equipos SET [email protected] WHERE id=NEW.eqloc 
    END 

它必須做什麼,當我更新匹配,它必須自動運行此觸發器並更新目標。

但它給了我一個錯誤。 什麼即時做錯了?感謝,並有一個愉快的一天...!

+2

它給你什麼錯誤? –

+0

@ muistooshort [錯誤] 1064 - 您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以找到正確的語法,以便在'ON EACH ROW'處使用 \t \t BEGIN \t \t \t DECLARE at vgls int; \t \t \t DECLARE at lgls int; \t \t \t SET at vgls'at line 2 –

回答

2

我注意到您的觸發器中沒有任何語句終止符,這會產生一些投訴,因爲例如SET @lgls = SELECT vgoles(NEW.eqloc) UPDATE equipos SET [email protected] 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 [email protected] WHERE id=NEW.eqvis; 
     UPDATE equipos SET [email protected] WHERE id=NEW.eqloc; 
    END; 
| 
delimiter ; 
+0

對不起,我的壞,我忘了分隔符! 它像一個魅力工作!非常感謝@ muistooshort! 祝您有美好的一天! –