我正在尝试使用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版本。有什么建议吗?
SIGNAL
该set message_text子句是信号语法的一部分-它们之间不应存在分号(;)。此外,它使用=运算符,而不是:=:
set message_text
;
=
:=
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 ;