をエラーを発射声明私は文は私には大丈夫に見えます、しかし、私は、次のMySQLのトリガーで
で迎えていますphpMyAdminの
DELIMITER //
CREATE NEW TRIGGER credit_refs AFTER UPDATE on investments FOR EACH ROW
BEGIN
DECLARE ref INT(20)
DECLARE parent INT(20)
DECLARE suparent INT(20)
SELECT ref,ref_pa,ref_supa INTO ref,parent,suparent FROM users WHERE tid = OLD.tid;
IF(ref != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (ref,OLD.inv,'ref',OLD.tid);
IF(parent != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (parent,OLD.inv,'ref_pa',OLD.tid);
IF(suparent != 0) THEN
INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (suparent,OLD.inv,'ref_supa',OLD.tid);
END //
DELIMITER ;
を使用してテーブルの上にトリガーを作成するには、この文を実行していIFエラー
静的解析:
解析中に4つのエラーが見つかりました。
認識されない文の種類。 (253の "IF"の近く)
認識できない文の種類。 (位置372の "IF"の近く)
認識されない文の種類。 (位置505の "IF"の近く)
認識されない文の種類。
MySQLは言っ
ドキュメント::(位置643の近くに "END")CREATE NEW TRIGGER credit_refs AFTER UPDATE on investments FOR EACH ROW BEGIN DECLARE ref INT(20) DECLARE parent INT(20) DECLARE suparent INT(20) SELECT ref,ref_pa,ref_supa INTO ref,parent,suparent FROM users WHERE tid = OLD.tid; IF(ref != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (ref,OLD.inv,'ref',OLD.tid); IF(parent != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (parent,OLD.inv,'ref_pa',OLD.tid); IF(suparent != 0) THEN INSERT INTO earnings (`tid`,`amount`,`type`,`ref_tid`) VALUES (suparent,OLD.inv,'ref_supa',OLD.tid); END
SQLクエリドキュメント
#1064 - あなたのSQL構文でエラーが発生しています。 FOR EACH ROWの投資を更新した後に「NEW TRIGGER credit_refs近く
BEGIN
DECL' at line 1
を使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してくださいうまくいけば、ここで誰かがイムがやって何を見せすることができるようになりますここで間違っている。
私はあまりにもmysqlに慣れていませんが、最初に@で宣言された変数に名前を付ける必要はありませんか? –
私は同じ規格で書かれたトリガーを定義しました。 –
@ EstebanP。これはMySQLではなく、msql構文です。@で始まるMySQL変数では、セッション変数があり、トリガーや他のストアドルーチン内で定義された変数とはまったく異なるスコープと役割を持っています。 – Shadow