2014-01-21 63 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” –