3

好的,所以我正在处理触发器,它告诉我它(MySQL 工作台 5.2)不识别这个变量。
*错误代码:1193。未知系统变量error_msg_3*

我认为在触发器中使用它是正确的,请帮助我

CREATE TRIGGER controlla_MaxCARDINALITA_INSERT
BEFORE INSERT ON SENTIERO__HA__TAPPA
FOR EACH ROW 
BEGIN

DECLARE max_cardinalita INTEGER;
DECLARE error_msg_3 CONDITION FOR SQLSTATE '99003';

SELECT COUNT(*) into max_cardinalita
FROM SENTIERO__HA__TAPPA
WHERE IDsentiero=NEW.IDsentiero;

IF max_cardinalita>=10 THEN
        SIGNAL error_msg_3;
        SET error_msg_3='INSERT: Il sentiero ha già il massimo numero di tappe consentito';

END IF;

END$$

编辑 ::

我试过这个,它似乎工作

DECLARE msg VARCHAR(255);
set msg = concat('MyTriggerError: Trying to insert a negative value in trigger_test: ');
signal sqlstate '45000' set message_text = msg;
4

1 回答 1

3

根据MySQL 文档#1193当您使用错误的代码时会发生错误SQLSTATE

消息:未知的系统变量%s

而且,正如您在同一页面99003上看到的那样,没有定义SQLSTATE 。

于 2013-02-04T00:46:32.497 回答