mysql - MySQL 中其他等效项时出现异常

标签 mysql oracle triggers

我正在尝试将 Oracle 触发器移植到 MySQL。触发器中有一个 EXCEPTION WHEN OTHERS 语句,虽然我已经找到了其他所有内容的等效语句,但我找不到这个。触发器类似于:

IF (yada yada)
    THEN
        BEGIN
            SELECT a
            INTO generic_variable1
            FROM table
            WHERE condition;
            SET generic_variable2 = value1;
     EXCEPTION WHEN OTHERS --this part needs to be replaced by valid MySQL syntax
        SET generic_variable2 = value2;
  END;
END IF;

如何将该部分转换为 MySQL?

最佳答案

您应该明白,与 Oracle 相比,MySQL 的存储过程/触发器语言非常有限。在移植到 MySQL 时,许多 Oracle 用户一遍又一遍地说,“我不敢相信 MySQL 做不到 X!!!!”

最接近 EXCEPTION WHEN OTHERS 的可能是 DECLARE CONTINUE HANDLER。

示例(未测试):

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @generic_variable2 = 1;

但是您应该在可能引发异常的代码块之前声明它,而不是之后。

参见 http://dev.mysql.com/doc/refman/5.5/en/declare-handler.html获取完整文档。

关于mysql - MySQL 中其他等效项时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882859/

相关文章:

mysql - 如何为MySQL DB创建自动更新触发器?

Javascript 触发事件

表上的 php mysql 原子 ' Select and Delete '

mysql - 以包含前导零的方式导出到 csv/excel

sql - 无效的 SQL 类型 : sqlKind = UNINITIALIZED - PLSQL Error

java - Hibernate Criteria.setMaxResults() 在 Oracle 11g 上失败

php - 拉维尔 : how to add where clause using query builder?

mysql - 是否值得将数据复制到 MEMORY 表中使用?

使用 xmlsequence 提取函数 (PL/SQL) 进行 XML 解析

mysql 如果更新后全部为空则删除行而不触发