2017-05-01 16 views
-2

私はSQL Plusを使用した後にMySQLで作業しており、更新後トリガーを作成しようとしています。いくつかの変種を試してみましたが、構文エラーが発生しています。私が間違っている場所を教えてくれますか?大変ありがとうございます。MySQL更新後のトリガー

CREATE TRIGGER after_user_update 
AFTER UPDATE 
ON user_list FOR EACH ROW 
BEGIN 
    UPDATE ON account 
    SET ACTION = 'update', 
    user_name = new.user_name; 
END; 
+0

エラーは何ですか? – uSeruSher

+0

これは私がMySQLで見た有効なUPDATE文のようには見えません。 – Uueerdo

+0

エラーメッセージ(1064)は、1行目で 'END'近くで使用する構文をチェックする必要があると言いますが、何も解決しないようです。 – CHartvig

答えて

0
delimiter // 
CREATE TRIGGER after_user_update AFTER UPDATE ON user_list 
FOR EACH ROW 
BEGIN 
    UPDATE account 
    SET ACTION = 'update' 
    WHERE user_name = new.user_name; 
END // 
delimiter ; 

ここではいくつかの問題がありました。 のMySQL WorkbenchのようなSQL IDEを使用して、エラーを強調表示する必要があります。区切り文字を最初に変更する必要があります。

+0

これはうまくいきました、ありがとうございました。以前はデリミタを使ってみましたが、おそらく私はそれを間違ってやっていました。区切り記号$$ – CHartvig

+0

を使用していました。区切り記号を定義しても問題ありません。デフォルトの ';'を別のものに変更するだけです。さもなければトリガ定義は最初の ';'で終わり、それは不完全になります –

-1

このコードを試すことができます。

DELIMITER $$ 
CREATE TRIGGER after_user_update 
AFTER UPDATE 
ON user_list FOR EACH ROW 
BEGIN 
    UPDATE ON account 
    SET ACTION = 'update', 
    user_name = new.user_name; 
END$$ 
DELIMITER ;