2014-01-21 62 views
0

我一直纏繞我的頭圍繞這個SQL語句,我試圖讓我已經達到了一個牆可以這麼說,如果你能借給任何意見,以我在做什麼錯誤的,這將是一個很大的幫助。我在第二條語句附近得到了錯誤,但我並沒有真正期望代碼的最後部分能夠工作。MYSQL觸發插入或更新不同的表

CREATE TRIGGER UpdateScores 
AFTER INSERT ON CharSheet FOR EACH ROW 
begin 
     DECLARE id_exists Boolean; 
       SELECT 
       1 
     INTO 
       @id_exists 
     FROM 
       ScoresTable 
     WHERE 
       ScoresTable.PlayerID= NEW.PlayerID; 

     IF @id_exists = 1 
     THEN 
      UPDATE 
        ScoresTable 
      SET 
        Exp = :New.Exp; 
      WHERE 
        ScoresTable.PlayerID = :NEW.PlayerID; 
     END IF; 

     IF @id_exists = 0 
     THEN 
     -- I don't expect this part to work yet. 
      INSERT INTO ScoresTable VALUES (:New.PlayerID, :New.Race, :New.Class, :New.Exp); 
     END IF; 
END; 
$$ 
+0

什麼是錯誤? –

+0

很模糊 #1064 - 你在你的SQL語法錯誤;檢查對應於您的MariaDB服務器版本的手冊,以找到在':New.Exp; WHERE ScoresTable.PlayerID =:NEW.Play'在第19行 –

回答

0

的問題是在這個代碼塊:

THEN 
     UPDATE 
       ScoresTable 
     SET 
       Exp = :New.Exp; 
     WHERE 
       ScoresTable.PlayerID = :NEW.PlayerID; 
    END IF; 

set語句的末尾刪除分號。

+0

感謝您的快速幫助。 現在得到這個,但ATLEAST其沿着現在移動:d #1142 - TRIGGER命令拒絕用戶TrolAccounts'@'**.***.**.***'表「CharSheet」 –