raise application error Trigger in MySQL DBMS

跟風遠走 提交于 2020-06-11 04:44:06

问题


I am dealing with triggers in MySQL, and I want to add the raise application error, but my code indicates :

Error code 1064, SQL state 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(-20000,'Pay is below Texas minimum wage!');

END IF;

END' at line 9

and if I remove the part of raise application error, it works perfectly .

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 ;

回答1:


Your syntax appears to be MySQL. And yet, raise_application_error is an Oracle construct. You want signal, documented 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 message_text = 'Pay is below Texas minimum wage!';     
   END IF;
END @@ 
DELIMITER ;


来源:https://stackoverflow.com/questions/36611802/raise-application-error-trigger-in-mysql-dbms

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!