2016-04-14 5 views
0

私はトリガーを取り扱っております、と私は昇給のアプリケーションエラーを追加したいが、私のコードを示します。昇給アプリケーションエラートリガー

エラーコード1064、SQL状態42000:あなたのSQL構文でエラーが発生しています;あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が近くで使用できるようにしてください。 '(-20000、' Pay is Texas minimum wage! ');

終了IF;

ライン9

END」と私は昇給のアプリケーションエラーの一部を削除した場合、それは完璧に動作します。

トリガー:

DELIMITER @@ 
DROP TRIGGER IF EXISTS gmtt.after_update_mcorr @@ 

CREATE TRIGGER gmtt.after_update_mcorr 
AFTER UPDATE ON gmtt.mcorr 
FOR EACH ROW 
BEGIN 
     IF OLD.etat = '0' AND NEW.etat = '1' THEN 
      INSERT INTO historique(message, User, dateHisto) VALUES (CONCAT('a achevé la Maintenance ', OLD.codeMaint) , CURRENT_USER(), NOW()); 
     ELSE 
raise_application_error(-20000,'Pay is below Texas minimum wage!');  

    END IF; 

    END @@ 
DELIMITER ; 

答えて

2

あなたの構文はMySQLのように見えます。それでも、raise_application_errorはOracleの構成です。あなたが望むsignal、文書化here

DELIMITER @@ 
DROP TRIGGER IF EXISTS gmtt.after_update_mcorr @@ 
CREATE TRIGGER gmtt.after_update_mcorr 
AFTER UPDATE ON gmtt.mcorr 
FOR EACH ROW 
BEGIN 
    IF OLD.etat = '0' AND NEW.etat = '1' THEN 
     INSERT INTO historique(message, User, dateHisto) 
      VALUES (CONCAT('a achevé la Maintenance ', OLD.codeMaint) , CURRENT_USER(), NOW()); 
    ELSE 
     signal sqlstate -20000 set msgtext = 'Pay is below Texas minimum wage!';  
    END IF; 
END @@ 
DELIMITER ;