相关疑难解决方法(0)

从Trigger调用包含动态SQL的存储过程

我从Trigger调用存储过程,我收到以下错误:

存储函数或触发器中不允许使用动态SQL

为什么会发生这种情况,动态SQL正在存储过程中执行,该过程从触发器调用.也许这就是问题,如果有的话有什么办法吗?

编辑(添加代码):

这是主表中的Trigger:

-- Trigger DDL Statements
DELIMITER $$

USE `TestaDataBase`$$
CREATE TRIGGER `TestaDataBase`.`UpdateAuxilaryTable`
AFTER INSERT ON `MainTable` FOR EACH ROW  
BEGIN    
    /* Here we call stored procedure with parameter id of newly inserted row. */
    CALL TestProcedure('Year', 'Person', 'IdPerson', NEW.IdData);
END
$$
Run Code Online (Sandbox Code Playgroud)

这是从触发器调用的存储过程:

DELIMITER $$
CREATE PROCEDURE `TestDataBase`.`TestProcedure` (IN attribute CHAR(64), IN tableName CHAR(64), IN IdTable CHAR(64), IN IdLastRow MEDIUMINT)
BEGIN
DECLARE selectedValue MEDIUMINT;

SET @statement = CONCAT('SELECT ', attribute, ' FROM ', tableName, ' WHERE ', …
Run Code Online (Sandbox Code Playgroud)

mysql triggers stored-procedures dynamic-sql

4
推荐指数
1
解决办法
5318
查看次数

标签 统计

dynamic-sql ×1

mysql ×1

stored-procedures ×1

triggers ×1