gpt4 book ai didi

mysql - 在 MySQL DBMS 中引发应用程序错误触发器

转载 作者:可可西里 更新时间:2023-11-01 07:22:00 24 4
gpt4 key购买 nike

我正在处理 MySQL 中的触发器,我想添加引发应用程序错误,但我的代码表明:

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

如果我删除引发应用程序错误的部分,它会完美地工作。

触发器:

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 ;

最佳答案

您的语法似乎是 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 message_text = 'Pay is below Texas minimum wage!';
END IF;
END @@
DELIMITER ;

关于mysql - 在 MySQL DBMS 中引发应用程序错误触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com