2014-11-23 62 views
-1
我無法

與更新2臺一個觸發器,它給我一個錯誤附近「New.userid」更新多個表使用單觸發

CREATE TRIGGER userDownloads AFTER INSERT ON Downloads 
FOR EACH ROW 
UPDATE Project SET PROJECT_DOWNLOADS = PROJECT_DOWNLOADS + 1 WHERE PROJECTID = NEW.ProjectID, 
UPDATE User SET NO_OF_DOWNLOADS = NO_OF_DOWNLOADS + 1 WHERE USERID = NEW.UserID; 

回答

1

你必須寫你的觸發器是這樣的:

DELIMITER // 
CREATE TRIGGER userDownloads AFTER INSERT ON Downloads 
FOR EACH ROW 
BEGIN 
    UPDATE Project SET PROJECT_DOWNLOADS = PROJECT_DOWNLOADS + 1 WHERE PROJECTID = NEW.ProjectID; 
    UPDATE User SET NO_OF_DOWNLOADS = NO_OF_DOWNLOADS + 1 WHERE USERID = NEW.UserID; 
END// 

請參閱它的工作here

但是你確定需要觸發器嗎?爲什麼不在你的下載表上做COUNT?

SELECT ProjectID, COUNT(*) AS PROJECT_DOWNLOADS 
FROM Downloads 
GROUP BY ProjectID; 

SELECT UserID, COUNT(*) AS NO_OF_DOWNLOADS 
FROM Downloads 
GROUP BY UserID; 
+0

我想你之前說的,我得到了以下錯誤「#1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的'正確的語法手冊在第4行「 – fana 2014-11-23 11:50:38

+0

@fana請看我誇大的答案,我把'SEPARATOR'改爲'DELIMITER',這是在這裏正確的說法。如果你在控制檯上創建TRIGGER,它會起作用,但如果你使用的是PHPMyAdmin或其他工具,那麼可能會有不同的方式來指定一個分隔符 – fthiella 2014-11-23 11:54:39

+0

它的最終工作,謝謝。 – fana 2014-11-23 12:07:32