我试图使用MySQL触发器生成错误消息.以下是我的代码:
DELIMITER $$
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Initial_Fees`
FOR EACH ROW
BEGIN
IF ((SELECT Activation from Portfolio WHERE idPortfolio = New.idPortfolio)=false) THEN
SIGNAL SQLSTATE '45000';
SET MESSAGE_TEXT := 'Disabled Thing';
END IF;
END$$
DELIMITER ;
但这总会产生错误.我不知道错误是什么,因为它没有说错误,它只是“错误”.
对此有何建议?除此之外,有人说使用SIGNAL会遇到问题,因为它可能与MySQL版本有关.有什么建议?
解决方法:
set message_text子句是信号语法的一部分 – 它们之间不应该有分号(;).
另外,它使用a运算符,而不是:=:
DELIMITER $$
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `Initial_Fees`
FOR EACH ROW
BEGIN
IF ((SELECT Activation from Portfolio WHERE idPortfolio = New.idPortfolio)=false) THEN
SIGNAL SQLSTATE '45000' -- Note: no semicolon
SET MESSAGE_TEXT = 'Disabled Thing'; -- Note the = operator
END IF;
END$$
DELIMITER ;