2016-09-28 11 views
0

私はこれらの2つのトリガーを持っていますが、どちらも "THEN"に構文エラーがあり、その理由を理解できません。すべてのテーブルは呼び出されたときと同様に区切り文字で始まります。MySQLの文法エラーTHENトリガー

CREATE TRIGGER capacity 
AFTER INSERT ON Participants 
FOR EACH ROW 
BEGIN 
IF (NEW.status = 'a' AND 
    (SELECT capacity FROM rooms WHERE room = NEW.PID) > (SELECT COUNT(*) FROM Participants WHERE meetID = NEW.meetID) THEN DELETE FROM Participants WHERE PID = NEW.PID AND meetID = NEW.meetID; 
    END IF; 
    END $$ 

CREATE TRIGGER iraLikesBeer 
AFTER INSERT ON Meetings 
FOR EACH ROW 
BEGIN 
IF (NEW.what LIKE '%beer%' AND 'ira' NOT IN(SELECT pid FROM Participants WHERE meetid = 'NEW.meetid') THEN 
    INSERT INTO Participants 
    VALUES (NEW.meetID,'ira', 'u'); 
END IF; 
    END $$ 
+5

おそらくあなたはifeを閉じる必要があります。その前に ')' – DarkFenix

+1

IFが正しく閉じられていない場合は、その前に ")"を追加してください。 – iSensical

答えて

0

トリガー定義には不均衡なカッコがあります。

IF (NEW.status = 'a' AND (SELECT ...) > (SELECT ...) THEN ... 
    ^

最初のオープニングパンレンには閉じたパンがありません。

2番目のトリガーにも同じ問題があります。

+0

ええ、それは盲目です。大変申し訳ありませんが、 – NicklasN