MySQL:无法在Trigger中使用SIGNAL

我试图使用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 ; 
上一篇:mysql’插入’触发器根据其他字段计算字段


下一篇:更新mysql中的触发器中的相同行