小编典典

MySQL:无法在触发器中使用SIGNAL

sql

我正在尝试使用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版本。有什么建议吗?


阅读 251

收藏
2021-03-10

共1个答案

小编典典

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 ;
2021-03-10