2017-04-25 21 views
0

私は何を理解していない私は従うようTRIGGERを作成するとき、私は、私のデータベースに3つのテーブル[table_a、table_b、DATAZ]を持っている#1064 - SQL構文エラー、どのようにそれを解決するには?

CREATE TRIGGER trigz AFTER INSERT ON table_a 
FOR EACH ROW 
    IF EXISTS (SELECT * FROM table_b WHERE table_b.uid = '123') THEN 
     INSERT INTO dataz 
      VALUES('123'); 

ERROR

、など
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 

を取得私はWAMP Server 2.4を使用しています、誰もが解決策を持っている...ここ

をしないのですか? (ナイジェル・レン用)


EDIT 1 ::

SQL:

CREATE TRIGGER trigz AFTER INSERT ON table_a FOR EACH ROW 
IF EXISTS (SELECT * FROM table_b WHERE table_b.uid = 1) THEN 
    BEGIN 
     INSERT INTO dataz(userid) VALUES('123'); 
    END; 
END IF; 

がERROR:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 
+0

あなたはテーブル構造を提供していただけますか? –

+0

そんなに良く見えません。 。 。 「DELIMITER」、「BEGIN」、「END IF」はない。 。 。 –

+0

@GordonLinoffを削除したとき 'IF EXISTS(SELECT * FROM table_b WHERE table_b.uid = '123')THEN'この部分は正常に動作しています –

答えて

0

それがダウンエディタが終わりを認識する方法にあります声明の通常は;を使用しますが、プロシージャとして使用すると、どこにでも、あなたはそれを変更する必要があります。

DELIMITER $$ 

CREATE TRIGGER trigz AFTER INSERT ON Bin FOR EACH ROW 
begin 
IF EXISTS (SELECT * FROM Bin WHERE binID = 1) THEN 
     INSERT INTO log(text) VALUES('123'); 
END IF; 
end; 
$$ 

編集のようなので、何か: を使用する必要があります。

DELIMITER; 

終わりには正常に戻って区切りをリセットします。

+0

の[編集] 1をチェックし「IF END」の近くに使用する' ...右の構文としてエラーを取得することを試みた –

+0

'DELIMITER $$ としてクエリを作成してください。トリガtrigzを作成してから最後の行を作成してください。 begin IF EXISTS SELECT * FROM table_b WHERE table_b.uid = '123')DATAZ INTO THEN INSERT (ユーザーID)の値( '123')。 END IF; end; $$ ' –

+0

これはどのように実行していますか?DELIMITERコマンドを含めてすべてを実行する必要があります。 –

関連する問題