【问题标题】:MySQL Error Code: 1193. Unknown system variableMySQL 错误代码:1193。未知的系统变量
【发布时间】:2013-01-18 16:36:11
【问题描述】:

好的,我正在处理触发器,它告诉我它(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;

【问题讨论】:

    标签: mysql mysql-workbench error-code mysql-error-1193


    【解决方案1】:

    根据MySQL docs的说法,#1193的错误码是SQLSTATE使用错误的代码。

    消息:未知系统变量%s

    而且,正如您在同一个 page 上看到的,SQLSTATE 99003 没有定义。

    【讨论】:

    • 请查看我的编辑,为什么该代码有效?表中没有 45000,我想
    • @Jimmy5nomana 请再次参考有关SIGNAL 子句用法的文档。它清楚地提到:SIGNAL 是“返回”错误的方式。 SIGNAL 向处理程序、应用程序的外部或客户端提供错误信息。要发出通用 SQLSTATE 值的信号,请使用“45000”,这意味着未处理的用户定义异常
    • 谢谢,最后一个问题:mysql 不允许我对同一个事件和动作时间使用多个触发器来处理一个表......所以我听说了函数和过程;他们是解决方案吗?我想用最简单的方法解决它,我很着急。谢谢
    • @Jimmy5nomana 为此,您可以在DBA stackexchange获得更好的建议
    • 这不是理论!!!如果您有 3 个触发器,例如:AFTER UPDATE ON TABLE 1... 它们如何在该表上运行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多