2016-04-14 77 views
0

我處理的觸發器,我想補充的提高應用程序錯誤,但我的代碼表示:提高應用程序錯誤觸發

錯誤代碼1064,SQL狀態42000:您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在'(-20000,'Pay低於Texas最低工資!'')附近使用正確的語法;

END 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 ;