2016-04-14 5 views
0

Я имею дело с триггерами, и я хочу, чтобы добавить ошибку приложения рейз, но мой код указывает:повышение Trigger

Код ошибки 1064, SQL состояние 42000: У вас ошибка в вашем синтаксисе SQL ; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '(-20000, «Плата ниже минимальной заработной платы в Техасе!»);

END IF;

END»в строке 9

и если удалить часть ошибки приложения рейз, он отлично работает.

Trigger:

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 ; 
Смежные вопросы